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

使用dompdf生成PDF时输出为纯HTML文本问题求助

问题排查与解决

核心问题

代码中调用了htmlentities()处理待转换的HTML内容,该函数会将HTML标签的尖括号、引号等特殊字符转义为HTML实体(比如<div>会被转成&lt;div&gt;),dompdf接收到的已经不是可解析的HTML结构,而是纯文本内容,最终生成的PDF就会直接展示原始HTML代码。

修复方案

直接把htmlentities()去掉即可,修改对应行代码:

// 修改前
$pdf = PDF::loadHtml(htmlentities($content['profile_data']));
// 修改后
$pdf = PDF::loadHtml($content['profile_data']);

其他可选优化点(避免后续异常)

  • 先校验file_get_contents的返回结果是否正常,避免加载空内容或者失败的请求结果:
$htmlContent = file_get_contents(base64_decode($profile_data,true));
if ($htmlContent === false) {
    throw new \Exception('HTML内容加载失败');
}
$content['profile_data'] = $htmlContent;
  • 配置选项建议提前设置,再加载HTML内容,确保配置生效:
$pdf = PDF::setOptions(['isHtml5ParserEnabled' => true])->loadHtml($content['profile_data']);
  • 如果不需要直接输出PDF到浏览器,可删掉$pdf->stream()调用,只保留save方法即可,避免多余输出。
  • 校验待转换的HTML内容是否有语法错误,比如未闭合的标签、相对路径的静态资源(图片、CSS)是否可以被dompdf正常访问,相对路径可替换为绝对路径避免加载失败。

内容的提问来源于stack exchange,提问作者Qaisar Mughal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:04