php用wkhtmltopdf把html生成pdf

需要用php把html生成pdf,找了了个php扩展,HTML2PDF,只能生成一些简单的HTML代码,复杂的HTML+css无法生成。网上找到了强大的wkhtmltopdf。

直接下载bin包,不用安装,解压缩就能用。
./wkhtmltox/bin/wkhtmltopdf  http://www.baidu.com  baidu.pdf

如果wkhtmltopdf中文显示空白,打开windows c:\Windows\fonts\simsun.ttc拷贝到linux服务器/usr/share/fonts/目录
本来想用win10上的simsunb.ttf字体文件,发现不支持。所以在网上下载了simsun.ttc


wkhtmltopdf使用的是webkit引擎,在官方的指南中说明可以指定编码格式:--encoding 编码格式,经过测试是不行的。--encoding参数实际上指的是文件存储的编码格式。所以通过URL从服务器端请求而来的网页编码文件格式不能确定时后,会使用文件内容编码格式输出。如果文件编码是Ansi,但是html编码是gb2312,就会乱码。


在服务器上已经安装好wkhtmltopdf,见博客内文章。命令行执行正常。如果用php调用的话,两个办法,一个是exec执行。这个方法比较慢。另一个办法就是,包装成扩展。本来想自己用SWIG工具包一个php扩展,后来网上搜了一下,早就有人做好了。php不愧是最好的语言,哈哈!


找到两个扩展,phpwkhtmltopdf和php-wkhtmltox。一个下载下来发现例子是用的php名字服务方式调用,我最不喜欢php的名字服务的斜杠!!!所以选择了php-wkhtmltox这个,虽然最后更新时间是3年前,不过,安装非常简单。


下载安装,https://github.com/mreiferson/php-wkhtmltox


./phpinze


注意,如果wkhtmltopdf直接解压缩安装,需要指定phpwkhtmltox目录,如下:
./configure --with-phpwkhtmltox=/home/work/wkhtmltox/


cd /home/work/php/lib/php/extensions/no-debug-non-zts-20131226  看一下是否生成phpwkhtmltox.so
修改php.ini增加一行:
extension=phpwkhtmltox.so


执行一下test例子,ok了!


在实际使用中发现,对js支持不好,一句话,如果页面去掉js还能正常显示,那就能生成。反之,就不行。




参考资料:


下载地址:
http://wkhtmltopdf.org/downloads.html
中文参数列表
http://blog.163.com/songchao01230@126/blog/static/1161848722014222231114/
字体下载:
http://www.font5.com.cn/font_download.php?id=150&part=1237886897
如果是python的话,请参考如下:(pdfkit + wkhtmltopdf)
http://kaito-kidd.com/2015/03/12/python-html2pdf/
编码分析
http://aiilive.blog.51cto.com/1925756/1340243
pdf分页
http://blog.csdn.net/sibang/article/details/38733305
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值