PHP生成PDF:库概览与代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP生成PDF:工具与库完全概览



在服务器端生成PDF文档是Web开发中的常见任务之一。从发票和报告到证书和书籍,PDF格式仍然是文档交换的标准。在PHP中,有多个成熟的库,每个都有其优势。在本文中,我们将分析四个主要工具:FPDF、TCPDF、Dompdf和mPDF,提供代码示例,并帮助您为项目选择合适的解决方案。



1. FPDF——轻量且快速的库

FPDF 是用于在PHP中生成PDF的最古老、最流行的库之一。它不需要外部依赖,运行速度快,非常适合简单的文档:如发货单、收据、证明等。



安装

composer require setasign/fpdf


示例:包含文本和图像的简单PDF

<?phprequire_once 'vendor/autoload.php';

$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, '你好,世界!');$pdf->Image('logo.png', 10, 20, 30);$pdf->Output();?>


FPDF支持:

  • 使用不同字体(TrueType, Type1)
  • 创建表格、多行单元格
  • 插入图像(JPEG, PNG, GIF)
  • 页码、页眉页脚

缺点:对HTML和CSS的支持有限——所有元素都需要通过编程方式创建。



2. TCPDF——用于复杂文档的强大工具

TCPDF 是FPDF的增强版本,增加了对Unicode、HTML标签、SVG、数字签名、二维码等的支持。非常适合创建发票、证书、带表格的报告。



安装

composer require tecnickcom/tcpdf


示例:包含HTML内容和表格的PDF

<?phprequire_once 'vendor/autoload.php';

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->AddPage();$html = '<h1>标题</h1><table border="1"><tr><td>单元格1</td><td>单元格2</td></tr></table>';$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('example.pdf', 'I');?>


TCPDF的关键功能:

  • 完全支持Unicode(UTF-8)和西里尔字母
  • 内置模板、页码
  • 矢量图形(SVG, PDF表单)
  • 数字签名、加密
  • 支持PDF中的JavaScript


3. Dompdf——从HTML/CSS生成PDF

Dompdf 允许从HTML标记创建PDF,并处理CSS(包括Flexbox、Grid、媒体查询)。如果您已有Web模板,或者想快速将HTML页面转换为PDF,这是理想选择。



安装

composer require dompdf/dompdf


示例:从HTML字符串生成PDF

<?phpuse Dompdf\\Dompdf;

require_once 'vendor/autoload.php';

$dompdf = new Dompdf();$html = '<h2 style="color:blue;">来自Dompdf的问候!</h2><p>这是从HTML生成的PDF。</p>';$dompdf->loadHtml($html);$dompdf->setPaper('A4', 'portrait');$dompdf->render();$dompdf->stream("document.pdf");?>


Dompdf的特点:

  • 支持CSS 2.1和部分CSS3
  • 处理图像、字体(本地和Google Fonts)
  • 使用正确字体时内置支持西里尔字母
  • 易于与框架集成(Laravel, Symfony)

重要提示:对于包含JavaScript或动画的复杂布局

推荐