使用PHP生成PDF报告:如何选择库
创建PDF文档是Web开发中最常见的任务之一。发票、验收单、统计报告、价目表——这些通常需要在服务器端动态生成。PHP提供了几个成熟的库用于生成PDF。在本文中,我们将介绍三种最流行的工具:FPDF、TCPDF和Dompdf,并提供实用的代码示例。
1. FPDF——轻量且快速的经典
FPDF是一个简单的库,不需要外部依赖。它非常适合基本的报告:文本、表格、简单的图像。主要特点:
- 无需安装额外扩展即可运行(图像处理需要标准GD扩展)。
- 通过单独的插件(tFPDF)或手动字体转换支持UTF-8。
- 在简单文档上性能出色。
创建带表格的简单PDF报告示例:
<?phprequire('fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, '销售报告', 0, 1);$pdf->SetFont('Arial', '', 12);
// 表格标题$pdf->Cell(40, 10, '商品', 1);$pdf->Cell(30, 10, '数量', 1);$pdf->Cell(40, 10, '价格', 1);$pdf->Ln();
// 数据$pdf->Cell(40, 10, '笔记本电脑', 1);$pdf->Cell(30, 10, '5', 1);$pdf->Cell(40, 10, '45000 卢布', 1);$pdf->Ln();$pdf->Cell(40, 10, '鼠标', 1);$pdf->Cell(30, 10, '10', 1);$pdf->Cell(40, 10, '1200 卢布', 1);
$pdf->Output('D', 'report.pdf');?>2. TCPDF——用于复杂报告的强大工具
TCPDF是FPDF的增强版,支持UTF-8、CSS、HTML标签、二维码、数字签名等更多功能。推荐用于:
- 包含西里尔字母和其他非拉丁字体的文档。
- 具有复杂布局的报告(页眉页脚、多页表格)。
- 生成用于归档的PDF/A格式。
在TCPDF中使用HTML标记的示例:
<?phprequire_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->SetCreator('PythonLib');$pdf->SetAuthor('开发者');$pdf->SetTitle('复杂报告');
$pdf->AddPage();$html = '<h2>月度统计</h2><table border="1" cellpadding="5"><tr><th>参数</th><th>数值</th></tr><tr><td>访客</td><td>12 450</td></tr><tr><td>订单</td><td>342</td></tr></table><p>由系统<strong>自动</strong>生成。</p>';
$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('stat.pdf', 'I');?>3. Dompdf——从HTML/CSS生成PDF
Dompdf是一个独特的库,它从普通的HTML和CSS渲染PDF。如果您已经有报告布局(例如,用于浏览器打印),这是理想的选择。支持:
- CSS 2.1 和部分 CSS 3(float、position、border-radius)。
- 嵌入图像(base64或通过URL)。
- 表格、列表、多页文档。
将HTML模板转换为PDF的示例:
<?phprequire 'vendor/autoload.php';
use Dompdf\\Dompdf;
$dompdf = new Dompdf();$html = '<html><head>