PHP需借助tcpdf或dompdf等第三方库生成PDF:tcpdf适合程序化生成中文报表,需加载NotoSansCJK等字体;dompdf适合HTML转PDF,推荐内联样式与绝对路径图片。

PHP本身不直接生成PDF,但可以通过第三方库实现高效、灵活的PDF导出。最常用且稳定的是 tcpdf 和 dompdf,前者适合程序化生成(如发票、报表),后者更适合将HTML页面转PDF(如导出带样式的订单页)。
使用 TCPDF 生成结构化PDF(推荐用于业务单据)
TCPDF纯PHP编写,无需外部依赖,支持中文、页眉页脚、表格、条形码等,适合后台逻辑驱动的PDF生成。
- 安装:通过 Composer 安装
tecnickcom/tcpdf - 基础步骤:创建TCPDF实例 → 设置字体(如加`addTTFfont()`支持中文字体)→ 写入内容(`writeHTML()`或`Cell()`/`MultiCell()`)→ 输出(`Output('invoice.pdf', 'D')`触发下载)
- 注意:默认不支持UTF-8中文,需加载NotoSansCJK或simhei.ttf等中文字体,并用`setLanguageArray()`适配语言包
使用 Dompdf 将HTML模板转PDF(适合前端样式复用)
如果你已有带CSS的HTML订单页,Dompdf可直接渲染,开发快,但对复杂CSS和大文件性能较弱。
- 安装:
dompdf/dompdf,建议搭配phenx/php-font-lib和phenx/php-svg-lib增强字体与SVG支持 - 关键代码:读取HTML字符串或文件 → `loadHtml()` → `setPaper('A4', 'portrait')` → `render()` → `stream('order.pdf')`
- 提示:避免使用Flex/Grid布局;内联样式更可靠;图片用绝对路径或base64编码,防止缺失
常见业务场景示例:导出用户订单PDF
以TCPDF为例,后端接收订单ID,查数据库 → 组织数据 → 填入PDF模板 → 返回下载响应。
立即学习“PHP免费学习笔记(深入)”;
- 数据库查询后,构造数组包含订单号、商品列表、金额、时间等字段
- 用
startPageGroup()分页,writeHTML($html)写入预设HTML片段,或用MultiCell()逐行绘制表格 - 添加水印(
setTextShadow()或Image()叠加半透明图)、数字签名区域(留白+文字标注)提升正式感 - 最后设置Header/Footer显示公司名称和页码,调用
Output()完成导出
基本上就这些。选库看需求:要控制细节和性能选TCPDF,要快速套用现有页面选Dompdf。字体、路径、编码这三点调通,PDF导出就不复杂但容易忽略。











