您的位置:首页 > 编程语言 > PHP开发

php用wkhtmltopdf把html生成pdf

2017-03-14 12:32 1356 查看
需要用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php pdf html