5 votes

utiliser chrome --print-to-pdf --headless pour imprimer le html trop rapidement ?

J'ai utilisé cmd et tapé "chrome --headless --disable-gpu --print-to-pdf=d : \project\test.pdf http://localhost:8085/t1/index.html?data=http://localhost:8085/1/mock.json "

et le pdf généré est juste vide. Je pense que la raison est que j'ai utilisé fetch pour obtenir le mock.json et

dom n'a pas eu le temps d'effectuer un rendu complet. Si j'importe simplement mock.json et

Le pdf peut être rendu parfaitement. Existe-t-il donc un moyen de retarder le processus d'impression en pdf ?

Merci !

4voto

Ryan Shillington Points 558

J'ai résolu ce problème en utilisant un doux paquet nodeJS appelé html-pdf-chrome qui résout ce problème en demandant à Chrome d'attendre soit un délai d'attente, soit l'appel d'une fonction de rappel, soit l'existence d'un sélecteur sur la page.

Mon code :

const PRINT_OPTIONS = {
  clearCache: true,
  printOptions: {
    scale: 0.6
  },

  completionTrigger: new HtmlPdf.CompletionTrigger.Timer(5000)  // Give it 5000ms to render the HTML
};

async function outputHTMLToPDF(sourceHTML, outputFilename) {
  console.log("Printing the html using Chrome...");
  let pdf = await HtmlPdf.create(sourceHTML, PRINT_OPTIONS);

  console.log("Saving the PDF to " + outputFilename + "...");
  await pdf.toFile(path.join(DEFAULT_PRINT_PATH, outputFilename));
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X