我见过多个与这个问题非常相似的问题,所以一开始我很犹豫是否要发布它。但是没有任何建议可以解决我的问题,而且我自己似乎无法弄清楚出了什么问题。
对于我为一位客户制作的项目,他们希望能够将客户的报价(使用在线表格生成)转换为 PDF。很简单。由于整个项目是在 PHP 中,我使用了以下简单的过程:
- 将报价另存为临时 HTML 文件
- 使用 WkHTMLtoPDF 将 HTML 文件转换为 PDF
- 输出此 PDF 文件
- 清理(删除临时文件)
这一直有效,直到他们更换服务器。新服务器有防火墙。
起初,PDF 转换步骤返回一个防火墙页面,说明服务器无法建立出站连接。为了解决这个问题,我直接提供了 HTML 文件而不是链接到它(/var/www/mysite/temp/18382.html 而不是 www.example.com/temp/18382.html)。这转换了 HTML,但防火墙阻止了 CSS 和图像的加载
我可以通过简单地将 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
但似乎没有任何解决方法