在web开发中,php可通过第三方库生成pdf文档。常用库有tcpdf、fpdf、dompdf和mpdf,其中dompdf和mpdf适合将html/css转为pdf,而tcpdf和fpdf适合代码控制布局。推荐使用composer安装库文件,如dompdf的安装命令为composer require dompdf/dompdf。编写代码时,需实例化dompdf对象,加载html内容,并设置纸张大小和方向后渲染输出。常见问题包括中文显示需手动加载字体、图片建议使用绝对路径或base64编码、性能较低不适合高并发场景,以及调试应先确认html效果。掌握这些要点后即可灵活实现pdf导出功能。
在Web开发中,生成PDF文档是一个常见的需求,比如导出报表、发票、合同等。PHP虽然本身不直接支持PDF生成,但通过一些成熟的库可以轻松实现这个功能。下面来看看如何用PHP创建PDF文档。
1. 使用流行的PDF生成库
PHP本身没有内置的PDF生成函数(老版本有个pdflib扩展,但现在不太推荐),目前主流的做法是使用第三方库。最常用的是:
- TCPDF
- FPDF
- DomPDF
- mPDF
这些库各有特点,比如TCPDF和FPDF更轻量,适合纯代码控制布局;DomPDF和mPDF则更适合将HTML/css渲染成PDF,对前端开发者更友好。
立即学习“PHP免费学习笔记(深入)”;
如果你需要把网页内容转成PDF,推荐DomPDF或mPDF;如果需要精细控制每一页的内容,可以用FPDF或TCPDF。
2. 安装与引入库文件
以DomPDF为例,安装方式有两种:
-
使用 Composer(推荐):
composer require dompdf/dompdf
-
手动下载源码包并引入到项目中(不推荐,维护麻烦)
安装完成后,在你的php脚本中引入自动加载文件即可开始使用:
require_once 'vendor/autoload.php'; use DompdfDompdf;
3. 编写生成PDF的代码
以下是一个基本示例,展示如何将一段HTML内容生成为PDF并输出给浏览器:
// 实例化Dompdf对象 $dompdf = new Dompdf(); // 构建HTML内容 $html = '<h1>这是一个PDF测试文档</h1>'; $html .= '<p>使用PHP和DomPDF生成。</p>'; // 加载HTML内容 $dompdf->loadHtml($html); // 设置纸张大小和方向 $dompdf->setPaper('A4', 'portrait'); // 渲染PDF $dompdf->render(); // 输出PDF到浏览器,并指定文件名 $dompdf->stream("example.pdf", array("Attachment"=>0));
上面这段代码中需要注意几点:
- stream() 方法的第二个参数控制是否强制下载(”Attachment”=>1)还是在浏览器中预览(默认)
- HTML内容可以是你从数据库读取的数据,也可以是从模板引擎(如Twig、Blade)渲染出来的页面
- 支持内联CSS样式,但复杂布局可能需要调整
4. 常见问题与注意事项
- 中文显示异常:很多PDF库默认不支持中文字体,需要手动添加字体文件。DomPDF可以通过 [DOMPDF_FONT_DIR] 配置来加载中文字体。
- 图片路径问题:如果HTML中有图片,建议使用绝对路径或者base64编码嵌入。
- 性能问题:生成复杂的PDF会比较耗资源,不适合高并发场景下实时生成。
- 调试困难:PDF不像网页那样容易调试样式,建议先在浏览器中确认HTML效果再转PDF。
基本上就这些。掌握一个PDF库的使用后,你就可以根据业务需求灵活导出各种格式的文档了。