Je veux utiliser wkhtmltopdf pour rendre les deux pages que je contrôle (dans ce cas, je peux définir l'attribut window.status
lorsqu'ils sont rendus) et (occasionnellement) des pages que je ne contrôle pas. D'après ce fil de discussion sur la liste de diffusion Je devrais être capable de mettre --window-status
à une certaine valeur, et --javascript-delay
et le rendu commence dès que l'une de ces conditions est remplie. Ce n'est pas mon expérience ; la commande wkhtmltopdf --javascript-delay 10000 --window-status imdone http://www.google.com/ /tmp/google.pdf
attend indéfiniment (version 0.12.3, à la fois sur OSX et linux). Comment puis-je obtenir le comportement décrit sur la mailinglist ?
Réponse
Trop de publicités?Une solution de contournement consiste à utiliser l'option --run-script
pour définir la balise window.status
après un certain temps manuellement -- cela fonctionne à la fois sur la version qui utilise le correctif et celle qui utilise le QT non corrigé. Notez cependant que --run-script
semble avoir un petit bug dans l'échappement de son paramètre. Par conséquent, la ligne suivante vous donnera le comportement demandé :
wkhtmltopdf --window-status imdone --run-script \
'window.setTimeout(function(){window.status="imdone";},1000);' \
http://google.com/ /tmp/google.pdf
Notez qu'en raison du bogue susmentionné, cela ne fonctionne pas si l'on met des espaces dans le champ --run-script
et, par conséquent, l'opération suivante ne fonctionnera pas
wkhtmltopdf --window-status imdone --run-script \
'window.setTimeout(function (){window.status = "imdone";}, 1000);' \
http://google.com/ /tmp/google.pdf