使用到的工具
pdftk https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ pdf合并工具
wkhtmltopdf https://wkhtmltopdf.org/ 将html页面转为pdf的工具
windows 直接下载安装。
linux下:
安装wkhtmltopdf
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
rpm -i wkhtmltox-0.12.5-1.centos7.x86_64.rpm
提示缺少依赖:
libXrenderisneededbywkhtmltox-1:0.12.5-1.centos7.x86_64
xorg-x11-fonts-75dpiisneededbywkhtmltox-1:0.12.5-1.centos7.x86_64
xorg-x11-fonts-Type1isneededbywkhtmltox-1:0.12.5-1.centos7.x86_64
yum install 直接安装就好,安装好后,可执行测试
wkhtmltopdf http://www.baidu.com pdftest.pdf
完美输出(或者出现中文字变成方块或者乱码:是因为缺少中文字体,下载中文字体 ‘simsun.ttc 或其他字体’ 放到 /usr/share/fonts 目录)
安装pdftk:
官网上下载的rpm包 安装提示缺少依赖
Package: pdftk-2.02-1.el6.x86_64 (/pdftk-2.02-1.el6.x86_64) Requires: libgcj.so.10()(64bit)
这个依赖包yum也安装不上
使用这个命令:
yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.x86_64.rpm
即可。
项目中使用
基本思路:将页面保存为html文件(系统中因为这些页面涉及权限,无法直接访问),然后使用wkhtmltopdf转为pdf。
shell_exec("wkhtmltopdf xxx.html xxx.pdf")
需要批量导出时,我这里方案是将多个pdf合并为一个pdf然后下载(或者多个pdf文件打包下载)。
shell_exec("pdftk 1.pdf 2.pdf 3.pdf cat output xxx.pdf")
到此,已经完成。(以上在window10,centos7.5下运行)
篇外:在windows系统中,nginx服务器,使用file_get_contents会出现网站 卡住 没响应的情况,有遇到问题的可在留言区提问。