Maison  >  Article  >  interface Web  >  Comment générer des PDF fiables à partir d'applications monopage à l'aide de Puppeteer ?

Comment générer des PDF fiables à partir d'applications monopage à l'aide de Puppeteer ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-27 04:49:29864parcourir

How to Generate Reliable PDFs from Single-Page Applications Using Puppeteer?

Puppeteer : génération fiable de PDF en attendant la fin de la page

De nombreuses applications Web sont confrontées au problème de la génération efficace de PDF à partir de pages Web. Les applications d'une seule page, en particulier, présentent des défis à cet égard. Cet article aborde le problème et propose des solutions à ceux qui utilisent Puppeteer pour générer des PDF.

Tentatives et défis initiaux

Une approche initiale peut impliquer l'utilisation de page.waitFor('networkidle2 ') pour attendre que l'activité du réseau se stabilise. Cependant, pour les applications d'une seule page, cette méthode ne parvient souvent pas à attendre le chargement complet de la page, ce qui conduit à des documents PDF tronqués.

Solution : Attendre la navigation

Une solution plus fiable consiste à utiliser page.waitForNavigation() pour attendre que la nouvelle page se charge complètement avant de générer un PDF :

<code class="python">await page.goto(fullUrl, {
  waitUntil: 'networkidle0',
});

await page.type('#username', 'scott');
await page.type('#password', 'tiger');

await page.click('#Login_Button');

await page.waitForNavigation({
  waitUntil: 'networkidle0',
});

await page.pdf({
  path: outputFileName,
  displayHeaderFooter: true,
  headerTemplate: '',
  footerTemplate: '',
  printBackground: true,
  format: 'A4',
});</code>

Cette méthode garantit que le PDF n'est généré qu'après l'intégralité du processus de navigation. est terminé.

En attente d'éléments dynamiques

Dans les cas où des éléments générés dynamiquement doivent être inclus dans le PDF, page.waitForSelector() peut être utilisé pour s'assurer que le contenu est rendu avant de continuer :

<code class="python">await page.waitForSelector('#example', {
  visible: true,
});</code>

En utilisant ces techniques, les développeurs peuvent générer des PDF à partir d'applications d'une seule page avec fiabilité, garantissant que tout le contenu nécessaire est capturé dans le document.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn