WkHTMLtoPDF不加载本地CSS和图像(WkHTMLtoPDF not loading loc

2019-09-16 02:51发布

我已经看到了非常相似这一个多的问题,所以我起初犹豫张贴。 但什么解决我的问题,我似乎无法找出什么是错的我自己。

对于一个项目,我为一个客户做他们想给报价转换为他们的客户(使用在线表格生成)到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和图像的加载

我可以简单地通过直接在站点,而不是链接到它(使用嵌入它克服了CSS <style>标记),但这并不对图像的工作

我第一次尝试使用相对链接。 我改变<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但似乎没有任何修复它

Answer 1:

如果您是在Linux上检查图像的所有权。 对于windows,你会发现一些信息http://code.google.com/p/wkhtmltopdf/wiki/Usage 。

我尝试不同类型的路径图像:

  1. <img src="file:///var/www/testpdf/flowers.jpg"><br>
  2. <img src="./flowers.jpg"><br>
  3. <img src="flowers.jpg"><br>
  4. <img src="/var/www/testpdf/flowers.jpg"><br>

所有图像都显示正确。 我没有使用任何命令行参数(仅wkhtmltopdf /var/www/testpdf/makepdf.html makepdf.pdf



Answer 2:

在我的情况 - wkhtmltopdf版本0.12.2.1(带补丁的QT) - 加入碱标签与确信图像和CSS没有得到加载的绝对路径的头部分。

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


Answer 3:

对于Windows,你需要在你的标记使用绝对文件系统路径。 例如:

<link href='C:\Projects\Hello\Hello.Web\Content\custom\home.css' rel='stylesheet' type='text/css' />

不是http://localhost/Hello.Web/Content/custom/home.css



Answer 4:

Windows上使用路径: file:///C:/some/dir/some/file.img (注意特里普尔/)



Answer 5:

我知道这是很老的话题,但我刚刚遇到了同样的问题,也许它会帮助的人。
我尝试不同的方法,例如CSS背景图像并使用字符串作为base64编码数据的图像。 有时它帮助,有时没有 - 没有特定的规则,我可以找到。
原来,升级库wkhtmltopdf解决了这个问题。 我使用的版本0.12.0和升级至0.12.3



Answer 6:

同时在每个人的从这里和周围的净实物援助后,我发现了一种适合我的工作 - 在asp.net(C#)编码。

我需要通过URL访问图像(不是文件路径),因为仍然需要原始的源HTML进行访问。 通过故障排除后,我发现这点。

  1. 这些标志必须在命令行程序传递:“-q -n - 禁用智能缩--images --page尺寸A4”

  2. URL仍然是绝对的。

  3. 图片格式必须为JPG! 我本来试图做一个GIF,无果。

  4. 我发现添加“--enable-本地文件访问”没有帮助,因为它需要“\”斜线在图片的路径,而不是“/”斜线,这不利于如果你也希望利用源HTML(在某些浏览器)。 另外,如果你需要访问本地文件系统,你需要提供一个绝对路径,因为它从根本上直接读取,并从那里去。

希望这可以帮助别人。

干杯

-and



Answer 7:

您可以将base64编码的图片,如:

<img src=data:image/png;base64,someBase64content"/>


Answer 8:

For me the problem was resolved by doing two things: 1: In your app/config/config.yml
- Under the knp_snappy
- For the option temporary_folder write ./
- 即: 临时文件夹: 。/
2: Now in your html.twig pages remove the asset and write:
从:
 <link rel="stylesheet" type="text/css" href="{{ asset('css/default_template.css') }}">
至:
 <link rel="stylesheet" type="text/css" href="css/default_template.css">

而在这之后,它为我工作。

希望我帮助别人。 谢谢 !



Answer 9:

这可能是由于阻止您在互联网上走出去,回到你自己的服务器SE Linux或防火墙规则。 您可以更新您的主机文件以指向您的域回到你的机器的家庭住址电话。



Answer 10:

刚刚花了上得到一个瓶/蓝图/静态文件/ CSS由wkhtmltopdf读了几天,所以我想我会分享我的教训。 关于Python 3.4.4赢得7,瓶0.12,使用Pycharm亲,最新pdfkit和wkhtmltopdf。

  1. 从下载wkhtmltopdf http://wkhtmltopdf.org/downloads.html

  2. 安装 - 矿山安装:

    C:\ Program Files文件\ wkhtmltopdf \ BIN \ wkhtmltopdf.exe

  3. 您导入pdfkit到您的水壶routes.py脚本之后,插入线:

    path_wkthmltopdf = R'C:\ Program Files文件\ wkhtmltopdf \ BIN \ wkhtmltopdf.exe”

    配置= pdfkit.configuration(wkhtmltopdf = path_wkthmltopdf)

(注意在第一行的“R”在这里!)

  1. 当你在一个路线使用pdfkit,增加“配置=配置”作为参数,如:

    pdfkit.from_string(HTML_TEXT,output_filename,配置= CONFIG)

这告诉pdfkit到哪里寻找wkhtmltopdf。 是的,你需要做到这一点。

  1. 现在,在您的水壶基础模板添加“ _external = true”将你的CSS路线,例如:

(这将让wkhtmltopdf从抛出错误找不到CSS)

  1. NOW(严重的自举模板朱朱警告):进入你的瓶/外部库/站点包/ flask_bootstrap /模板/base.html模板:

一种。 修复CSS链接:

添加的“http:”所以它看起来像:

<link href="http:{{bootstrap_find_resource('css/bootstrap.css', cdn='bootstrap')}}" rel="stylesheet" media="screen">

湾 修复JS链接:

添加的“http:”所以JS链接如下所示:

<script src="http:{{bootstrap_find_resource('jquery.js', cdn='jquery')}}"></script>

<script src="http:{{bootstrap_find_resource('js/bootstrap.js', cdn='bootstrap')}}"></script>

而这一切

您烧瓶HTML转换为PDF

使用pdfkit和wkhtmltopdf

应该没有错误运行。

注意:我搬到从PHP到烧瓶中,如果你是一个烧瓶-ER,请发表您的解决方案在这里。 烧瓶社区是要比PHP社区,所以我们都在以间距。



Answer 11:

当浏览器渲染你的HTML,它采用这样的相对路径(有时在它的开头网址):

<img src="/static/images/some_picture.png">
<img src="http://www.example.com/static/images/some_picture.png">

但是,当WkHTMLtoPDF是您的服务器上运行,它与你的本地文件直接通过文件系统连接,而不是通过一个Web服务器。 因此,对于本地文件, 不像浏览器,WkHTMLtoPDF需要的实际文件路径

<img src="/var/www/myapplication/static/images/some_picture.png">

(这为我工作与Python瓶)



Answer 12:

要与您的图像或样式生成您的PDF,你需要按如下方式提供服务器的路径:

<img src="https://upload.wikimedia.org/wikipedia/...image.png" />

<link href="http://localhost:8080/css/file.css" media="all" rel="stylesheet" type="text/css" />

注意第二个环节,它的本地地址到你的样式表,或者也能像第一链路的遥控器。 文件路径没有工作对我来说,只有服务器路径的资源。

PS:在我的情况,我使用的春天启动的IntelliJ中的IDE,我需要IDE无效的高速缓存,并在调试模式下才能起作用无法运行,否则可能会无法更新的东西。



文章来源: WkHTMLtoPDF not loading local CSS and images