mPDF 6.0遇HTML含尖括号生成空白PDF问题求助
解决mPDF 6.0遇尖括号生成空白PDF的问题
根据你描述的情况,mPDF 6.0遇到HTML中的尖括号就输出空白页,大概率是未转义的非HTML标签尖括号被错误解析导致的,结合你试过的无效方案,给你几个针对性的解决思路:
1. 转义文本中的非HTML尖括号
mPDF会把所有<和>默认当作HTML标签的一部分解析,如果你的内容里是纯文本的尖括号(比如数学符号、代码片段里的<),必须转义成HTML实体:
- 转义
<为< - 转义
>为>
可以用PHP的htmlspecialchars()函数处理纯文本内容(注意不要直接处理完整HTML,否则会转义正常的HTML标签):
// 比如处理用户输入的文本内容 $user_text = "This is a test < 100"; $safe_text = htmlspecialchars($user_text, ENT_COMPAT, 'UTF-8'); // 再把安全文本嵌入到HTML模板中 $html = "<p>{$safe_text}</p>";
如果是属性里的尖括号(比如<div title="Score < 90">),同样需要转义,否则会破坏HTML结构导致mPDF解析失败。
2. 排查HTML结构的合法性
mPDF 6.0对不规范HTML的容忍度极低,哪怕是一个未闭合的标签或者错误嵌套的元素,都可能导致静默失败生成空白页。建议:
- 检查HTML中是否有未闭合的标签(比如
<div>没对应</div>) - 确认所有属性值都用引号包裹
- 避免在HTML注释里使用不规范的尖括号
3. 开启更全面的错误排查
你设置的$mpdf->debug = true;在mPDF 6.0中可能不会输出解析阶段的详细错误,可以尝试:
// 开启PHP错误显示 error_reporting(E_ALL); ini_set('display_errors', 1); // 开启mPDF的错误提示 $mpdf->debug = true; $mpdf->showImageErrors = true; $mpdf->allow_charset_conversion = true;
这样能捕获到PHP层面或者mPDF解析时的隐藏错误,帮助定位问题。
4. 考虑升级mPDF版本
mPDF 6.0是比较老旧的版本(发布于2015年左右),后续的7.x版本修复了大量HTML解析的bug,对现代HTML的兼容性更好。如果业务允许,升级到最新稳定版可能直接解决这个问题。
5. 逐步定位问题代码
因为你没有提供引发问题的示例HTML,建议采用二分法逐步测试:
- 先写一个极简的HTML(比如
<p>Test < 50</p>)测试是否正常生成PDF - 逐步添加原有HTML的内容,直到出现空白页,定位到具体引发问题的代码段
内容的提问来源于stack exchange,提问作者Velsankar Balasubramanian
相关产品推荐
相关产品推荐

