一、需求
将数据同步HTML模板生成PDF
二、wkhtmltopdf
wkhtmltopdf
不是程序,而是 软件。能够安装在 linux 或者 windows 服务器上通过命令行将任意html页面转pdf。基本上样式是一样的,不会有很大的偏差。
wkhtmltopdf
官网地址: https://wkhtmltopdf.org/
wkhtmltopdf
命令手册:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
三、安装使用
下面的安装使用是在Centos系统
安装wkhtmltopdf
1 | [root@hongshaorou ~]# yum install wkhtmltopdf |
安装完成之后执行下转换命令
1 | [root@hongshaorou ~]# wkhtmltopdf www.baidu.com baidu.pdf |
报错是需要安装另一个第三方包 不同系统参考wkhtmltopdf - QXcbConnection: Could not connect to display文章安装。
1 | [root@hongshaorou ~]# yum install xorg-x11-server-Xvfb |
安装完成之后再次执行转换命令
1 | [root@hongshaorou ~]# xvfb-run wkhtmltopdf www.baidu.com baidu.pdf |
四、遇到的问题
如果你是在macOS上完成上面的操作,基本可以完美生成PDF。但是,当你是在Linux的环境的时候,很大可能会遇见导出的PDF出现空白和乱码。这是因为缺少相应的字体导致的。
后来查阅,原来程序在转换的时候需要对应的字体,以便用于文字渲染,但当你需要转换的html中包含本机环境没有的字体时,程序就会默认转为宋体来渲染,这其实应该是WebKit内核的设定,所以说,
你的机器上至少应该有宋体!!
,否则的话中文其实是没法显示的。
我们需要下载对应的字体,下载地址:simsun.ttc
下载好之后将字体放到/usr/share/fonts/
目录下即可。
参考文章: