首先,第一个坑,wkhtmltopdf的安装,详细如下:
下载最新的包 http://wkhtmltopdf.org/downloads.html --- Linux (Ubuntu Trusty)32-bit /64-bitbuilt on Ubuntu 14.04.1
wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
安装依赖的组件:
apt-get install libxfont1 xfonts-encodings xfonts-utils xfonts-base xfonts-75dpi
安装wkhtmltopdf:
dpkg -i wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
测试一下:
wkhtmltopdf http://www.people.com.cn/ 1.pdf
这是在网上找的办法。安装没错,该有插件也基本上全了,如果安装不成功,看一下下提示,apt-get update 试一下,然而运行还是会抱一个cannot connect的错误,详细如下:
QXcbConnection: Could not connect to display
Aborted
继续谷歌,最终再次安装xvfb 解决问题 执行xvfb-run wkhtmltopdf ....
具体参考:https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2037#issuecomment-62019521
至此wkhtmltopdf 告一段落。
其次,composer require snappy ,不多说了。。。详细使用参考github:https://github.com/barryvdh/laravel-snappy
然而呢,下一个坑,windows按照提示直接下载pdf是没有问题的,linux下提示两个方法受限制,proc_get_status,proc_open,这两个方法在php.ini的disable_functions 删除掉就可以使用的,
proc_open()- 执行一个命令,并且打开用来输入/输出的文件指针。
proc_get_status—获取由proc_open()函数打开的进程的信息
至于这两个方法会不会引起安全问题,暂时未考虑,读者可自行判断。
至此,pdf文件可以下载。
最后,第三个坑,现在的pdf文件默认是margin是10mm,这样样式看起来就不太好,文档写的setOption(‘margin-top’,50),windows下时起作用的,然而ubuntu下并没有什么卵用,谷歌到要设置什么header-spacing footer-spacing 所谓的页眉页脚,然而没看到什么作用,最后实在不想继续下去了,直接在分页的div下加了个空白div 撑起顶部一段空间,暂时告一段落。
再加个tip:wkhtmltopdf 有个很好的方法,就是在那个div的样式后添加一个:page-break-inside:avoid;就ok了。样例:
.page-index1{width: 210mm;height: 297mm;margin: 0 auto;background: white;text-align: center;page-break-inside:avoid;}
<div class="page-index1">content</div>
本人小菜一个,有什么不对的地方,敬请指正。