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!