html - WkHTMLtoPDF 不加载本地 CSS 和图像

标签 html wkhtmltopdf

我看到了多个与这个问题非常相似的问题,所以一开始我很犹豫是否要发布它。但没有任何建议可以解决我的问题,而且我自己似乎也搞不清楚问题所在。

在我为一个客户制作的项目中,他们希望能够将客户的报价(使用在线表格生成)转换为 PDF。很简单。由于整个项目都是用 PHP 编写的,因此我使用了以下简单过程:

  1. 将报价保存为临时 HTML 文件
  2. 使用 WkHTMLtoPDF 将 HTML 文件转换为 PDF
  3. 输出此 PDF 文件
  4. 清理(删除临时文件)

这一直有效,直到他们更换了服务器。新服务器有防火墙。

起初,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但似乎没有什么可以解决的

最佳答案

在我的例子中——wkhtmltopdf 版本 0.12.2.1(带有修补的 qt)——添加一个带有绝对路径的 base 标签到 head 部分确保图像和 css 确实被加载。

<html>
<head>
...
<base href="http://www.example.com/">
<link href="/assets/css/style.css" rel="stylesheet">
...
</head>

关于html - WkHTMLtoPDF 不加载本地 CSS 和图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627310/

相关文章:

ruby-on-rails - PDFkit 在生成带有图像的 pdf 时挂起

ruby-on-rails - wicked_pdf_image_tag 在查找图像时解析为公共(public)文件夹

wkhtmltopdf:无法连接到 X 服务器

html - 在 HTML 中绘制(树)图

html - 在标题下方居中放置一个 div

html - 单击按钮将输入数据保存到 localStorage

html - 内联 block 元素换行时的CSS,父包装器不适合新宽度

javascript - 等待动态加载的脚本

wkhtmltopdf - wkhtmltopdf可变DPI和页面大小(以像素为单位)

php - wkhtmltopdf 二进制文件未找到或不可执行 - Windows 和 CakePHP