需要用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
参考资料:
下载地址:
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
直接下载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