PHP生成PDF需依场景选方案:TCPDF纯PHP但CSS支持弱;Dompdf兼容性好但不执行JS;wkhtmltopdf效果最佳但需系统权限。稳定复现需多环境测试。

PHP 本身不内置 PDF 生产能力,必须依赖扩展或第三方库;直接调用 exec() 调用外部工具(如 wkhtmltopdf)虽可行,但存在安全与部署风险,不推荐生产环境盲用。
用 TCPDF 生成基础 PDF(适合纯 PHP、无扩展权限场景)
TCPDF 是纯 PHP 实现的库,无需额外扩展,适合共享主机或无法安装 ext-imagick/ext-gd 的环境。但它对 CSS 支持有限,float、flex、现代字体子集几乎不支持。
- 下载最新版 TCPDF(v6.6+),解压后只保留
tcpdf.php和config/、fonts/目录即可 - 中文需提前复制并注册字体:把
simhei.ttf放进fonts/,再用$pdf->addTTFfont('fonts/simhei.ttf', 'TrueTypeUnicode', '', 32) - 避免用
writeHTML()渲染复杂表格——单元格跨行、边框合并容易错位,改用Cell()或MultiCell()手动布局更稳 - 生成大文件(>10MB)时注意
memory_limit和max_execution_time,TCPDF 内存占用是原始 HTML 的 3–5 倍
用 Dompdf 渲染 HTML 为 PDF(开发体验好,但内存敏感)
Dompdf 对 HTML/CSS 兼容性优于 TCPDF,支持多数 Bootstrap 类和内联样式,适合从已有页面导出 PDF。但它基于 PHP 解析渲染,不是真正浏览器引擎,@media print 不触发,position: fixed 仅在页眉页脚中有效。
- 务必使用 Composer 安装:
composer require dompdf/dompdf,手动引入易漏依赖(如phenx/php-font-lib) - 默认不启用远程图片加载,若 HTML 含
<img src="https://...>%EF%BC%8C%E9%9C%80%E6%98%BE%E5%BC%8F%E8%AE%BE%E7%BD%AE%EF%BC%9A%24dompdf->set_option('isRemoteEnabled',%20true)%0A - %E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93%E9%9C%80%E9%80%9A%E8%BF%87%20
load_font.php%20%E5%B7%A5%E5%85%B7%E7%94%9F%E6%88%90%20PHP%20%E5%AD%97%E4%BD%93%E6%8F%8F%E8%BF%B0%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6%E6%94%BE%E5%85%A5%20lib/fonts/%EF%BC%9B%E4%B8%8D%E8%83%BD%E7%9B%B4%E6%8E%A5%E4%B8%A2%20.ttf%20%E8%BF%9B%E5%8E%BB%E5%B0%B1%E7%94%A8 %0A - %E7%94%9F%E6%88%90%E5%90%AB%20JS%20%E5%8A%A8%E6%80%81%E5%86%85%E5%AE%B9%E7%9A%84%E9%A1%B5%E9%9D%A2%E4%BC%9A%E5%A4%B1%E8%B4%A5%E2%80%94%E2%80%94Dompdf%20%E4%B8%8D%E6%89%A7%E8%A1%8C%20JavaScript%EF%BC%8C%E6%89%80%E6%9C%89%E6%95%B0%E6%8D%AE%E5%BF%85%E9%A1%BB%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%A2%84%E6%B8%B2%E6%9F%93%E5%AE%8C%E6%88%90 %0A
%E7%94%A8%20wkhtmltopdf%20+%20shell_exec%EF%BC%88%E9%AB%98%E6%80%A7%E8%83%BD%EF%BC%8C%E4%BD%86%E9%9C%80%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9D%83%E9%99%90%EF%BC%89
%0A%E8%BF%99%E6%98%AF%E7%9B%AE%E5%89%8D%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9C%9F%E5%AE%9E%E6%B5%8F%E8%A7%88%E5%99%A8%E6%B8%B2%E6%9F%93%E6%95%88%E6%9E%9C%E7%9A%84%E6%96%B9%E6%A1%88%EF%BC%8C%E6%94%AF%E6%8C%81%E5%AE%8C%E6%95%B4%20CSS3%E3%80%81@media%E3%80%81SVG%E3%80%81%E7%94%9A%E8%87%B3%E9%83%A8%E5%88%86%20Canvas%EF%BC%88%E9%9C%80%E5%8A%A0%20--enable-local-file-access%EF%BC%89%E3%80%82%E4%BD%86%E5%BF%85%E9%A1%BB%E7%A1%AE%E8%AE%A4%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%81%E8%AE%B8%E6%89%A7%E8%A1%8C%E5%A4%96%E9%83%A8%E5%91%BD%E4%BB%A4%E4%B8%94%E4%BA%8C%E8%BF%9B%E5%88%B6%E8%B7%AF%E5%BE%84%E5%8F%AF%E4%BF%A1%E3%80%82



















