2017-03-07 1 views
0

J'utilise wkhtmltopdf (0.12.4 avec patch qt) et phpwkhtmltopdf pour créer des fichiers PDF à partir de html. Dans certains de ces fichiers PDF, j'ai besoin d'inclure plusieurs graphiques et pour ce faire, j'ai utilisé des graphiques google. Le problème auquel je suis actuellement confronté se pose lorsque je tente de créer un document PDF contenant plusieurs pages contenant des graphiques. Le processus des erreurs avec le message suivant:Wkhtmltopdf et Google Charts

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% 

Pas une erreur très utile comme vous pouvez le voir. J'utilise un délai de 1 seconde pour permettre aux cartes de se charger. Si je supprime ce délai, le PDF est créé sans erreur, mais aucun des graphiques ne s'affiche. De plus, si je garde le délai à 1 seconde mais que je réduis le nombre de pages qui contiennent un graphique, tout fonctionne parfaitement. Je suis en mesure de créer un PDF de 10 pages avec 5 "pages de graphique", mais si j'essaie de 11 pages avec 6 graphiques, il échoue. Je dois être capable de gérer plus de 10 ou 15 cartes dans un seul PDF.

Tout aperçu de cette erreur ou des suggestions pour une approche alternative sont appréciés. Merci!

+0

@WhiteHat, merci pour la suggestion. J'ai essayé ça sans aucune chance. J'ai les mêmes résultats qu'avant. – saudes

Répondre

0

J'ai rencontré un problème similaire sur des pages avec des charges lourdes qui incluent des graphiques. Il est difficile d'avoir le bon timing, et j'ai trouvé après plusieurs heures de sortie de cheveux que la clé (pour moi au moins) est de s'assurer que les deux côtés de l'équation sont correctement synchronisés avec le temps plus long l'état d'attente wkhtmltopdf.

IE sur le côté des graphiques Google, j'inclure un délai suffisant pour empêcher la stupide charge la page lente 'Chrome erreur en ajoutant un retard JS sur la traction de la bibliothèque réelle:

setTimeout(function(){google.load('visualization', '1.1', {'callback':'drawChart', 'packages':['corechart', 'bar']})}, 1200); 

1200 fonctionne très bien pour mon besoins, vous pourriez avoir besoin de le dépasser en fonction de ce que vous tirez de google. L'important (pour moi) était de s'assurer que wkhtmltopdf équilibrait le délai et ajoutait un peu plus de retard pour lui-même (google delay + délai de traitement). Pour cette page j'ai ajouté un retard 2200 ms sur le côté pdf:

--javascript-delay: 2200 

ne marcherait pas du tout jusqu'à ce que je les deux articles à parler en équilibre. Comme vous l'avez dit, les graphiques ne s'afficheront pas du tout sans le délai - cela montre une bonne probabilité que la moitié de l'erreur soit résolue. Il peut être utile d'essayer d'ajouter le délai de l'autre côté et de voir si cela aide.