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或动画的复杂布局