CodeIgniter4中调用mPDF的WriteHtml方法触发TypeError错误求助
CodeIgniter4 + mPDF 调用
WriteHtml()触发TypeError: Unsupported operand types: string * int错误 问题详情
- 环境:CodeIgniter4、PHP 8.1、mPDF,页面使用MDBootstrap CSS
- 现象:视图单独渲染功能正常,但将视图渲染结果存入
$html变量后,调用$mpdf->WriteHtml($html)时触发类型错误:TypeError Unsupported operand types: string * int - 排查结论:逐步测试发现,只要HTML元素的class中包含
bg-secondary就会触发该错误,推测其他类似Bootstrap颜色类也可能存在相同问题
相关HTML代码
<html> <head> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet" /> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet"/> <!-- MDB --> <link href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.0.1/mdb.min.css" rel="stylesheet" /> </head> <body> <div class="container-md pt-2 border" style="width: 80%"> <div class="row"> <div class="col-md-2 text-center"> <img src="<?php echo base_url();?>/public/assets/images/MSAS_Logo.png" class="img-fluid" width="70%" height="70%" alt="MSAS Logo" /> </div> <div class="col-md-10 text-center"> <p class="fs-3 lh-1">Meenakshi Sehkari Awaas Samiti</p> <p class="fs-6 lh-2">(Reg. No 1523. Plot No. 7, Sector PI, Greater Noida, (Distt. Gautam Budh Nagar), U.P - 201308.</p> </div> </div> <div class="row bg-secondary"> <div class="col-md-12 text-center justify-content-center"> <h3>Maintenance Bill Note</h3> </div> </div> </body> </html>
(注:已修正原代码中未闭合的div标签语法错误)
解决方案
1. 用行内样式替代触发错误的类
直接将bg-secondary替换为对应的行内背景色样式,绕过mPDF对该类的解析:
<div class="row" style="background-color: #6c757d;">
2. 自定义CSS并替换类名
生成HTML后替换有问题的类名,再加载自定义CSS避免解析冲突:
// 替换HTML中的bg-secondary为自定义类 $html = str_replace('bg-secondary', 'custom-bg-secondary', $html); // 定义自定义CSS $customCss = '.custom-bg-secondary { background-color: #6c757d; }'; // 先加载自定义CSS,再加载HTML内容 $mpdf->WriteHTML($customCss, \Mpdf\HTMLParserMode::HEADER_CSS); $mpdf->WriteHTML($html);
3. 更新mPDF到最新版本
该错误大概率是mPDF的CSS解析器bug,更新到最新版本的mPDF可能已经修复了该类型的解析问题。
内容的提问来源于stack exchange,提问作者Jamia Millia Islamia
相关产品推荐
相关产品推荐

