如何让wkhtmltopdf在尽可能多的情况下工作?

时间:2015-10-27 10:59:49

标签: html pdf wkhtmltopdf

这个关于wkhtmltopdf的问题有一个特定的组件和一个更通用的组件。

一般来说:我正在尝试将各种网页提取到pdf文件中,并且我希望wkhtmltopdf能够在尽可能多的情况下工作。它是一个非常好的工具,但我经常遇到无法转换网页的问题。你们有一套与wkhtmltopdf一起使用的标志吗?

具体来说:例如,一个不是很远的网页,但我遇到的问题是http://gizmodo.com/microsoft-surface-book-review-so-good-i-might-switch-1737680767。当我运行没有任何标志的wkhtmltopdf(在Windows中)时,我得到以下内容:

>>wkhtmltopdf http://gizmodo.com/microsoft-surface-book-
review-so-good-i-might-switch-1737680767 blah.pdf
Loading pages (1/6)
Error: Failed loading page http://gizmodo.com/microsoft-surface-book-review-so-g
ood-i-might-switch-1737680767 (sometimes it will work just to ignore this error
with --load-error-handling ignore)
Warning: A finished ResourceObject received a loading progress signal. This migh
t be an indication of an iframe taking too long to load.
Warning: Received createRequest signal on a disposed ResourceObject's NetworkAcc
essManager. This might be an indication of an iframe taking too long to load.
Exit with code 1, due to unknown error.

如果我按照说明操作并使用--load-error-handling ignore标志,则会生成PDF文件,但该文件为空。我如何让wkhtmltopdf使用这个网页?

我试着用rasterize.js查看其他工具,例如phantomJS,但是它有一系列问题......

谢谢你们!

2 个答案:

答案 0 :(得分:1)

当启用Javascript并且完成速度太慢时会发生这种情况。如果你需要运行javascript来解决这个问题,请添加:

--javascript-delay 100000  

调整Javascript完成的等待时间(以毫秒为单位)。所以在上面的例子中它等待100秒。请注意,如果您一次运行多文档转换,则此设置适用于整个运行,而不适用于每个单独的文档。因此,如果您在单个pdf输出中转换大约100个输入htmls,则可能需要很长的延迟。

我还添加到我的脚本中:

--no-stop-slow-scripts (Do not Stop slow running javascripts)

启用:不要停止慢速运行javascripts。

答案 1 :(得分:0)

原来其实很简单! 只需使用“-n”标志!就像一个魅力!