我正在尝试使用wkhtmltopdf
将HTML文件转换为PDF。
为此,我在Debian盒子上安装了wkhtmltopdf并尝试运行此命令:
/usr/bin/xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf /path/convert.1303714349.4961.html.tmp /path/convert.1303714349.4961.pdf.tmp
我收到以下错误:
Loading page (1/2)
Error: Failed loading page file:///path/convert.1303714349.4961.html.tmp (sometimes it will work just to ignore this error with --ignore-load-errors)
该文件确实存在于/path/convert.1303714349.4961.html.tmp
中,并且权限设置正确。它可以与file://
前面的路径有关吗?
答案 0 :(得分:31)
我相信wkhtmtopdf
无法处理具有非典型扩展名的本地文件。尝试将输入文件重命名为*.html
。
请参阅https://web.archive.org/web/20131124022426/http://code.google.com/p/wkhtmltopdf/issues/detail?id=486上的问题和评论。
答案 1 :(得分:3)
另一个有用的提示是用“_”之类的字符替换文件名中的空格,因为当文件名有空格时,进程无法加载页面
答案 2 :(得分:0)
我的Windows 7机箱上的“file://”路径没有任何问题。
您是否在错误消息中--igonore-load-errors
尝试了建议?
答案 3 :(得分:0)
xvfb-run
wkhtmltopdf
和无头X11服务器之间的用户权限协商引起的。用户运行以下命令:
cd /home/user;
touch somehtml.html;
/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24"
wkhtmltopdf somehtml.html preview.pdf;
wkhtmltopdf产生警告:
警告:加载页面失败 file:///home/user/somehtml.html(忽略)
目标PDF文件不存在,缺少somefile.html内容或为空白。
条件:
64 bit Fedora Linux 17, PC Desktop
Install via a 'sudo yum install wkhtmltopdf'
wkhtmltopdf has version 0.10.0
From a terminal, using xvfb-run
somehtml.html中有问题的HTML:
<html>
<head>head tag</head>
<body>
<h1>this should be H1<h1>
Words words words in a paragraph.
</body>
</html>
位于用户目录中并运行
cd /home/user;
/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf /home/user/somehtml.html /home/user/preview.pdf
wkhtmltopdf产生警告
警告:加载页面失败 file:///home/user/somehtml.html(忽略)
/home/user/preview.pdf丢失或空白。
您向用户xvfb-run
监禁wkhtmlpdf
,并且没有读写/home/user/somehtml.pdf
或/home/user/preview.pdf
的权限
要查看这是否是您的问题,请询问xvfb-run
我们拥有哪种权限?
/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" whoami > /tmp/secret.txt; cat /tmp/secret.txt
/tmp
的权限通常比/ home / user /宽松,因此在/ tmp内进行的所有工作也要
cd /tmp;
touch /tmp/somehtml.html;
#put above html in somehtml.html
cat /tmp/somehtml.html
<html>
<head>head tag</head>
<body>
<h1>this should be H1<h1>
Words words words in a paragraph.
</body>
</html>
/usr/bin/xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf /tmp/somehtml.html /tmp/preview.pdf
您应该获得此标准输出:
loaded the Generic plugin
Loading page (1/2)
Printing pages (2/2)
Done
并预览.pdf
这比看起来要难,因为wkhtmltopdf必须与敌对的第三方专有PDF渲染软件(由adobe制造?)抗衡,并且它们与浏览器开发人员合作来混淆和使引擎难以使用,因为许多大公司他们花钱购买了他们的绝密源代码。 wkhtmltopdf闯入了这个世界,以便开放源代码的人们可以拥有它,而不必花钱在高层办公大楼中花钱。这就是adobe向浏览器开发人员付款的原因,这使我们很难做到这一点。我们正在稀释他们的利润机制,因此他们会在可能的范围内向我们投掷止动杆进行报复。就是这样我们在全球范围内传播给新手的次数越多,第3方就越难以阻止止损,因为您正在防止他人获利。