You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mPDF 6.0遇HTML含尖括号生成空白PDF问题求助

解决mPDF 6.0遇尖括号生成空白PDF的问题

根据你描述的情况,mPDF 6.0遇到HTML中的尖括号就输出空白页,大概率是未转义的非HTML标签尖括号被错误解析导致的,结合你试过的无效方案,给你几个针对性的解决思路:

1. 转义文本中的非HTML尖括号

mPDF会把所有<和>默认当作HTML标签的一部分解析,如果你的内容里是纯文本的尖括号(比如数学符号、代码片段里的<),必须转义成HTML实体:

  • 转义<为&lt;
  • 转义>为&gt;

可以用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 &lt; 50</p>)测试是否正常生成PDF
  • 逐步添加原有HTML的内容,直到出现空白页,定位到具体引发问题的代码段

内容的提问来源于stack exchange,提问作者Velsankar Balasubramanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:13:15