对于我为一个客户制作的项目,他们希望能够将客户的报价(使用在线表单生成)转换为PDF。足够简单由于整个项目都是PHP,所以我使用了以下简单的过程:
>将报价保存为临时HTML文件
>使用WkHTMLtoPDF将HTML文件转换为PDF
>输出此PDF文件
>清理(删除临时文件)
这一直工作直到他们改变了服务器。新服务器具有防火墙。
首先,PDF转换步骤返回一个防火墙页面,表示服务器无法进行出站连接。为了解决这个问题,我直接输入了HTML文件,而不是链接到它(/var/www/mysite/temp/18382.html而不是www.example.com/temp/18382.html)。这转换了HTML,但防火墙阻止了加载CSS和图像
我可以通过将其直接嵌入到网站而不是链接到它(使用< style>标签)来克服CSS,但是这对于图像不起作用
我尝试使用相对链接。我更改了< img src =“http://www.example.com/temp/image.jpg”/>到< img src =“./ image.jpg”/> ;.这没有办法。 接下来我试过< img src =“file:///var/www/mysite/temp/image.jpg”/>但是这也不行
我阅读并浏览WkHTMLtoPDF手册,我尝试了几个不同的命令行参数,如–enable-local-file-access,–enable / var / www / mysite / temp /和–images,但似乎没有修复它
解决方法
我尝试了不同类型的图像路径:
>< img src =“file:///var/www/testpdf/flowers.jpg”>< br>
>< img src =“./ flowers.jpg”>< br>
>< img src =“flowers.jpg”>< br>
>< img src =“/ var / www / testpdf / flowers.jpg”>< br>
所有图像显示正确。我没有使用任何命令行参数(只有wkhtmltopdf /var/www/testpdf/makepdf.html makepdf.pdf)