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

CodeIgniter中使用TCPDF导出HTML页面为PDF显示异常如何解决

问题修复方案

导致PDF显示异常的核心原因是TCPDF对现代HTML/CSS的支持能力有限,再加上代码存在数据传递疏漏,可按以下步骤修复:

  • 补全视图数据传递
    你在pdfreport视图中加载printconsignment视图时,没有将控制器传入的$data参数传递进去,导致printconsignment视图无法获取查询到的result数据,首先将加载视图的代码修改为:
$this->view('printconsignment', $data);
  • 全量使用内联CSS样式
    TCPDF对外部样式表、<style>标签的支持度极低,所有样式必须写在元素的style属性内。比如表格要固定宽度、合并边框,单元格要设置边框、内边距,全部直接写到对应标签的style属性中,不要使用class引用外部样式。
  • 所有资源使用绝对路径
    printconsignment视图中的图片、字体等资源,不要使用相对路径,必须填写完整的绝对URL或者服务器物理路径,避免TCPDF无法加载资源导致显示异常。
  • 调整TCPDF配置适配宽页面
    如果你的原页面内容宽度较大,将TCPDF实例化的第一个参数从'P'(竖版)改为'L'(横版),避免内容因为宽度不足被挤压变形:
$obj_pdf = new TCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

同时建议将setFontSubsetting参数改为true,减少字体加载异常的概率。

  • 简化HTML布局结构
    不要使用浮动、Flex、Grid等现代CSS布局,所有排版全部使用表格实现,TCPDF对表格的兼容性最好,能最大程度还原你要的排版效果。
  • 调试原始HTML内容
    你可以在获取$content之后临时加一行输出代码,确认原始HTML内容本身没有数据缺失、结构错误:
$content = ob_get_contents();
// 临时加这行调试,确认HTML正常后再删除
echo $content;exit;
ob_end_clean();

如果调整后还是达不到预期效果,可以替换为dompdf库生成PDF,dompdf对CSS的支持度远高于TCPDF,适配成本更低。

内容的提问来源于stack exchange,提问作者dingu da

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:27:03