PHP生成PDF文件说明_PHP导出PDF业务示例

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

PHP本身不直接生成PDF,但可以通过第三方库实现高效、灵活的PDF导出。最常用且稳定的是 tcpdfdompdf,前者适合程序化生成(如发票、报表),后者更适合将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-libphenx/php-svg-lib增强字体与SVG支持
  • 关键代码:读取HTML字符串或文件 → `loadHtml()` → `setPaper('A4', 'portrait')` → `render()` → `stream('order.pdf')`
  • 提示:避免使用Flex/Grid布局;内联样式更可靠;图片用绝对路径或base64编码,防止缺失

常见业务场景示例:导出用户订单PDF

以TCPDF为例,后端接收订单ID,查数据库 → 组织数据 → 填入PDF模板 → 返回下载响应。

  • 数据库查询后,构造数组包含订单号、商品列表、金额、时间等字段
  • startPageGroup()分页,writeHTML($html)写入预设HTML片段,或用MultiCell()逐行绘制表格
  • 添加水印(setTextShadow()Image()叠加半透明图)、数字签名区域(留白+文字标注)提升正式感
  • 最后设置Header/Footer显示公司名称和页码,调用Output()完成导出

基本上就这些。选库看需求:要控制细节和性能选TCPDF,要快速套用现有页面选Dompdf。字体、路径、编码这三点调通,PDF导出就不复杂但容易忽略。