PHP中的PDF生成:最佳库与代码示例

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

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

开始课程

PHP中的PDF生成:库概述与实践示例



创建PDF文档是Web开发中的常见任务之一。从账单和报告到证书和书籍,PDF仍然是文档交换的通用格式。在PHP中,有几个强大的库允许从HTML或通过编程方式生成PDF。在本文中,我们将分析四种流行的工具:TCPDF、FPDF、Dompdf和mPDF。



1. FPDF — 轻量且快速的经典



FPDF 是最古老、最简单的库之一。它不需要安装额外的扩展(除了GD)。主要优点是极简和速度。FPDF直接处理坐标,从而完全控制元素的位置。



创建简单PDF的示例:

<?phprequire('fpdf.php');

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


优点:

  • 非常小的体积(约100 KB)
  • 不需要外部依赖
  • 通过单独的字体支持UTF-8


缺点:

  • 处理HTML复杂
  • 对CSS的支持有限


2. TCPDF — 强大且功能丰富



TCPDF 是FPDF的增强版本,支持UTF-8、HTML、CSS、图像、二维码、数字签名等。它是复杂文档的标准选择。



使用HTML的示例:

<?phprequire_once('tcpdf/tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->AddPage();$pdf->writeHTML('<h1>标题</h1><p>这是一个包含<b>粗体</b>文本的段落。</p>');$pdf->Output('example.pdf', 'I');?>


特点:

  • 完全支持Unicode和RTL(阿拉伯语、希伯来语)
  • 内置字体(DejaVu、FreeSerif)
  • 支持SVG、JavaScript、表单


3. Dompdf — 从HTML/CSS生成



Dompdf 将HTML和CSS转换为PDF。如果您已经有页面布局或模板,这是理想的选择。Dompdf支持大多数CSS属性,但并非全部(例如,Flexbox和Grid可能无法正常工作)。



示例:

<?phprequire 'vendor/autoload.php';

use Dompdf\\Dompdf;

$dompdf = new Dompdf();$html = '<h2 style="color:red;">红色标题</h2><p>带缩进的文本。</p>';$dompdf->loadHtml($html);$dompdf->setPaper('A4', 'portrait');$dompdf->render();$dompdf->stream("document.pdf");?>


优点:

  • 简单:编写HTML,获得PDF
  • 对表格和图像的良好支持


缺点:

  • 需要PHP 7.1+以及mbstring、dom扩展
  • 复杂的CSS布局可能会出错


4. mPDF — 混合方法



mPDF 是一个结合了TCPDF和Dompdf功能的库。它能够很好地处理HTML和CSS,支持Unicode、表格、页眉页脚、水印。mPDF特别适合创建书籍和杂志。



使用CSS的示例:

<?phprequire_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \\Mpdf\\Mpdf();$html = '<div style="border:1px solid #000; padding:10px;">块内容</div>';$mpdf->WriteHTML($html);$mpdf->Output('output.pdf', 'I');?>


优势:

  • 出色的CSS 2.1支持和部分CSS3支持
  • <

推荐