2014-02-05 191 views
4

我正在与WKTHMTOPDF合作并真正享受它。但是,正在转换的页面具有谷歌地图,生成的PDF随地图一半加载出来。我知道有一个选项可以在之前的版本中添加--javascript - 延迟,但它会显示已被弃用。我使用的是0.99版本。请帮忙。谢谢。wkhtmltopdf javascript延迟

回答

4

--javascript-delay选项根本不被弃用。另外,建议升级到最新版本 - 0.9.9是一个非常旧的版本。

7

可以使用wkhtmltopdf版本0.12.0

我也使用在一些网站的javascript高的内容。以前,它不能在0.99版本中正确渲染,但是当我使用版本0.12并使用选项--javascript-delay时,一切都很正常。

您可以添加其他选项过于完美即加载你的JavaScript --enable-javascript--no-stop-slow-scripts

确保您在使用--javascript延迟使用正确的时间延迟,这取决于你的网站是多少它需要渲染的时间。如果你会使用更多的时间延迟,那么它会需要更多的时间来执行,如果你将采取更少的时间延迟,那么JavaScript将不会被正确加载。
The link to latest version of wkhtmltopdf

15

另一更好的方法可以做到这一点并不需要使用--javascript - 延迟(并具有不要求你设置的延迟时间的好处,你知道什么之前所需的延迟实际上会是)。

回调添加到 'tileloaded' 事件:

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){ 
    window.status = 'ready_to_print'; 
}); 

然后调用wkhtmltopdf设置为 'ready_to_print' 例如在--window.status选项

wkhtmltopdf --window-status ready_to_print map.html map.pdf 

很明显,你可以改变字符串“ready_to_print”是你要这么久不管是window.status已经不等于该值时wkhtmltopdf被调用,上面的代码触发之前。

类似的方法可以与谷歌图表一起使用,尽管相应的事件会以不同的名称出现。