我正在尝试使用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://
前面的路径有关吗?
我相信wkhtmtopdf
不处理具有非典型扩展名的本地文件。尝试将输入文件重命名为*.html
。
请参阅https://web.archive.org/web/20131124022426/http://code.google.com/p/wkhtmltopdf/issues/detail?id=486上的问题和评论。
另一个有用的提示是用“_”之类的字符替换文件名中的空格,因为当文件名有空格时,进程无法加载页面
我的Windows 7机箱上的“file://”路径没有任何问题。
您是否尝试过错误消息中的建议--igonore-load-errors
?
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产生警告:
警告:加载页面文件失败:///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会发出警告
警告:加载页面文件失败:///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
和preview.pdf
这比看起来更难,因为wkhtmltopdf必须与敌对的第三方专有PDF渲染软件(由adobe制作?)进行竞争,并且他们与浏览器开发人员协同工作,以便对他们的引擎进行模糊处理和访问,因为许多大公司都是他们的钱他们的绝密源代码。 wkhtmltopdf正在刺激这个世界,以便开源人员可以拥有它,而无需在高层办公楼现金支付诉讼。这就是为什么adobe向浏览器的开发者付钱让我们难以接受。我们正在稀释他们的利润机制,所以他们通过在我们可能的地方投掷停止棒来进行报复。就是这样。我们越来越多地将这个世界传播给新手,第三方投掷停止棒的难度越大,因为你在其他方面阻止了利润。