Php Wkhtmltopdf和谷歌图表
我正在使用wkhtmltopdf 0.12.4和修补的qt和phpwkhtmltopdf从html创建PDF文件。在一些PDF中,我需要包括几个图表,为此我一直在使用google图表。当我试图创建一个包含多个图表页面的pdf时,我目前面临的问题就出现了。进程出错,并显示以下消息:Php Wkhtmltopdf和谷歌图表,php,google-visualization,wkhtmltopdf,Php,Google Visualization,Wkhtmltopdf,我正在使用wkhtmltopdf 0.12.4和修补的qt和phpwkhtmltopdf从html创建PDF文件。在一些PDF中,我需要包括几个图表,为此我一直在使用google图表。当我试图创建一个包含多个图表页面的pdf时,我目前面临的问题就出现了。进程出错,并显示以下消息: Loading pages (1/6) [> ] 0% [>
Loading pages (1/6)
[> ] 0%
[> ] 0%
[> ] 1%
[=> ] 2%
[=> ] 3%
[==> ] 4%
[===> ] 5%
[===> ] 6%
[====> ] 7%
[====> ] 8%
[=====> ] 9%
[======> ] 10%
[======> ] 10%
[=======> ] 13%
[==========> ] 18%
[============> ] 21%
[===============> ] 26%
[===============> ] 26%
[==================> ] 30%
[=====================> ] 35%
[======================> ] 38%
[=========================> ] 43%
[===========================> ] 46%
[==============================> ] 51%
[=================================> ] 55%
[===================================> ] 59%
[=====================================> ] 63%
[========================================> ] 67%
[==========================================> ] 71%
[=============================================> ] 76%
[=============================================> ] 76%
[==============================================> ] 78%
[==============================================> ] 78%
[===============================================> ] 79%
[================================================> ] 80%
[================================================> ] 81%
[====================================================> ] 87%
[=====================================================> ] 89%
[======================================================> ] 90%
[======================================================> ] 91%
[=======================================================> ] 92%
[=========================================================> ] 95%
[============================================================] 100%
正如您所看到的,这不是一个非常有用的错误
我使用1秒的js延迟来给图表一个加载的机会。如果我删除此延迟,将创建PDF,但不会显示任何图表。此外,如果我将延迟保持在1秒,但减少包含图表的页面数量,那么一切都会完美工作。
我可以创建一个包含5个图表页的10页PDF,但如果我尝试创建包含6个图表的11页PDF,它将失败。我需要能够处理10或15个图表在一个单一的PDF格式
任何对这一错误的洞察或对替代方法的建议都将不胜感激。谢谢 我在包含图表的重载页面上遇到了类似的问题。正确的时间安排是很棘手的,我花了好几个小时才发现,对于我来说,关键至少是要确保等式的两个“边”都是正确的时间安排,而等待状态的时间越长 IE在google图表方面,我在实际的库拉取中添加了一个JS延迟,这足以防止愚蠢的Chrome“页面加载缓慢”错误:
setTimeout(function(){google.load('visualization', '1.1', {'callback':'drawChart', 'packages':['corechart', 'bar']})}, 1200);
1200适合我的需要,你可能需要把它调高一点,这取决于你从谷歌得到了什么
对我来说,重要的一点是确保wkhtmltopdf平衡了延迟,并为自己增加了一点延迟google delay+处理延迟。对于此页面,我在pdf端添加了2200毫秒的延迟:
--javascript-delay: 2200
在我把这两个项目平衡起来之前,这根本不起作用。正如你所说的,图表在没有延迟的情况下根本不会显示——这表明你很可能已经解决了一半的错误。尝试将延迟添加到另一端可能会有所帮助,看看是否有帮助。使用“-window status ready”并结合以下JS解决了加载问题。这是一个计时问题,由JS函数解决:
function loadGoogleGraph(graphCallback) {
var interval = setInterval(function() {
console.log('not-ready-yet');
if (
google.visualization !== undefined
&& google.visualization.DataTable !== undefined
&& google.visualization.PieChart !== undefined
){
clearInterval(interval);
console.log('ready');
window.status = 'ready';
graphCallback()
}
}, 100);
}
loadGoogleGraph(<YOUR FUNCTION>)
而不是
google.charts.setOnLoadCallback(<YOUR FUNCTION>);
以上是Abisco的改编版本:@WhiteHat,谢谢你的建议。我试过了,但运气不好。结果和以前一样。