PHP 如何生成 PDF

在日常工作中,我们经常会遇到需要把网页内容、报表数据转成PDF的场景——比如电商订单要存成不可修改的凭证、公司月度总结要导出成统一格式的文件,要是手动复制粘贴不仅麻烦还容易出错。对于用PHP做开发的朋友来说,有几个简单实用的工具能帮我们快速搞定PDF生成,不用自己从零写代码,普通人看一遍就能上手。

最省心的方案:用现成的工具包(无需复杂配置)

刚接触PHP的开发者,推荐用 TCPDF 或者 DomPDF,这两个是网上用得最多的“懒人工具”,几乎不用额外环境配置,只要下载对应文件放到项目里就能用。举个例子,你想把一段简单的文字转成PDF,代码大概是这样的:先引入工具文件,新建一个PDF对象,然后把你要转的内容填进去,最后输出或保存成文件就行,就像给打印机喂纸,把内容塞进去就生成成品。

PHP 如何生成 PDF

这俩工具的区别是:DomPDF 对HTML的兼容性更好,你甚至可以直接写一段网页格式的内容(带图片、表格)转成PDF,就像把网页“另存为”PDF;TCPDF 更灵活,适合需要精细控制格式的场景,比如调整字体大小、页边距,就像给文档做排版时的“微调按钮”。

适合复杂场景的进阶方案:调用浏览器引擎生成

如果你的PDF需要带复杂的表格、图片,甚至是有分页的长文档,用工具包可能会遇到排版乱的问题,这时候可以试试 wkhtmltopdf,它本质是调用Chrome或Firefox的浏览器引擎来转PDF,相当于你自己打开浏览器把网页打印成PDF,效果和你手动操作的几乎一模一样。

用这个方案的话,需要先在服务器上安装 wkhtmltopdf 程序,然后在PHP里用 exec 或 shell_exec 函数调用这个程序,把要转的HTML内容传过去。比如你要把公司的月度报表(有折线图、合计表格)转成PDF,只要把报表的HTML代码传过去,它就能自动生成和你在浏览器里看的报表完全一样的PDF,不会出现表格错位、图片模糊的问题。

新手容易踩的小坑

不少新手第一次用的时候会遇到问题,其实大多是小细节没注意:比如用 DomPDF 时,要确保图片的路径是绝对路径,不能用相对路径,就像你给朋友发照片要发完整链接,不然工具找不到图片;用 wkhtmltopdf 时,服务器如果是Linux系统,还要注意权限问题,要给程序加执行权限,不然它没法运行。另外,生成的PDF如果要避免被随意修改,记得设置一下权限,比如用工具加个“只读”的标记,就像给文件加个封条,防止别人改内容。

总的来说,PHP生成PDF并没有想象中复杂,根据自己的需求选对工具就行:简单内容用 DomPDF 或 TCPDF,复杂网页内容用 wkhtmltopdf,遇到问题多看看官方给的小例子,很快就能熟练掌握,再也不用手动处理那些烦人的文档转换工作。

上一篇 JavaScript 怎么运行