一个项目中需要用到网页生成PDF,就是将整个网页生成一个PDF文件,
以前也用过HTML2PDF,只能生成一些简单的HTML代码,复杂的HTML + css 生成的效果惨不忍睹,
百度了一下,发现有个wkhtmltopdf,wkhtmltoimage,下载过来尝试一下,果然不错,可以将网页原封不动的生成为一个PDF文件,完全符合项目需求了。
不过这是一个命令行程序,接下来讲的才是重点了。
wkhtmltopdf是一个在命令行执行的程序,PHP可以通过exec,system等来执行命令,我尝试了一下,确实可以使用,可以用它调用wkhtmltopdf生成PDF文件,
但是效率实在太低,生成实在太慢,测试的时候是一个人,生成一个文件,假如是生产环境很多人同时生成的话,估计肯定不行。
但是直接在命令行执行wkthmltopdf生成命令,执行速度还是很快的。
如何解决效率问题。
也没有想到什么好的方法了,我的解决思路:
将需要生成的网址,提交保存到数据库,然后写了一个命令行执行的php脚本,读取这个表里面需要生成的记录,有的话,就调用命令生成文件,这个脚本设置为5秒定时执行一次,
网页上,,在写一个ajxa轮询,1秒一次,检测文件是否有生成。
就这样解决了问题了。
虽然不是很完美,但是项目确实可用了,如果对速度要求高一点的话可以将PHP执行3秒一次,2秒一次。应该会更快。这个就没尝试过了。