我看过很多与这个问题非常相似的问题,所以我一开始就犹豫不决.但没有任何建议解决我的问题,我似乎无法弄清楚自己的错误.
对于我为一个客户制作的项目,他们希望能够将客户的报价(使用在线表单生成)转换为PDF.很简单.由于整个项目都是PHP,我使用了以下简单的过程:
直到他们更换服务器一直有效.新服务器有防火墙.
首先,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但似乎没有任何解决它
10u*_*0us 32
在我的情况下 - wkhtmltopdf版本0.12.2.1(带有修补的qt) - 使用绝对路径向头部添加基本标记,确保图像和css确实被加载.
<html>
<head>
...
<base href="http://www.example.com/">
<link href="/assets/css/style.css" rel="stylesheet">
...
</head>
Run Code Online (Sandbox Code Playgroud)
Bas*_*sen 26
如果你在Linux上检查你的图像的所有权.对于Windows,您可以在http://code.google.com/p/wkhtmltopdf/wiki/Usage上找到一些信息.
我尝试了不同类型的路径到图像:
<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)
vla*_*mir 13
对于Windows,您需要在标记中使用绝对文件系统路径.例如:
<link href='C:\Projects\Hello\Hello.Web\Content\custom\home.css' rel='stylesheet' type='text/css' />
Run Code Online (Sandbox Code Playgroud)
!不http://localhost/Hello.Web/Content/custom/home.css
小智 13
为了嵌入它们,您可以插入 base64 编码的图像,例如:
<img src="data:image/png;base64,someBase64content"/>
Run Code Online (Sandbox Code Playgroud)
当浏览器呈现您的 HTML 时,它使用一个相对路径(有时以 URL 开头),如下所示:
<img src="/static/images/some_picture.png">
<img src="http://www.example.com/static/images/some_picture.png">
Run Code Online (Sandbox Code Playgroud)
但是当 WkHTMLtoPDF 在您的服务器上运行时,它直接通过文件系统而不是通过网络服务器与您的本地文件连接。因此,对于本地文件,与浏览器不同,WkHTMLtoPDF 需要实际文件路径:
<img src="/var/www/myapplication/static/images/some_picture.png">
Run Code Online (Sandbox Code Playgroud)
(这对我使用 Python Flask 有用)
小智 5
可能已经太晚了:)
顺便说一句,只需将此配置添加到最后的选项中即可。
options = {'enable-local-file-access': None}
pdfkit.from_string(html, 'filename.pdf', options=options)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73497 次 |
| 最近记录: |