Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wkhtmltopdf和谷歌图表_Php_Google Visualization_Wkhtmltopdf - Fatal编程技术网

Php Wkhtmltopdf和谷歌图表

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% [>

我正在使用wkhtmltopdf 0.12.4和修补的qt和phpwkhtmltopdf从html创建PDF文件。在一些PDF中,我需要包括几个图表,为此我一直在使用google图表。当我试图创建一个包含多个图表页面的pdf时,我目前面临的问题就出现了。进程出错,并显示以下消息:

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,谢谢你的建议。我试过了,但运气不好。结果和以前一样。