Puppeteer:通过等待页面完成来可靠地生成 PDF
许多基于 Web 的应用程序都面临着从网页高效生成 PDF 的问题。单页应用程序尤其在这方面提出了挑战。本文解决了这个问题,并为那些使用 Puppeteer 生成 PDF 的人提供了解决方案。
初步尝试和挑战
初始方法可能涉及使用 page.waitFor('networkidle2 ')等待网络活动稳定下来。但对于单页应用,这种方法往往无法等待页面完全加载,导致PDF文档被截断。
解决方案:等待导航
更可靠的解决方案是使用 page.waitForNavigation() 等待新页面完全加载后再生成 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>
此方法确保仅在整个导航过程之后才生成 PDF已完成。
等待动态元素
在需要包含在 PDF 中的动态生成元素的情况下,可以使用 page.waitForSelector()确保在继续之前呈现内容:
<code class="python">await page.waitForSelector('#example', { visible: true, });</code>
通过使用这些技术,开发人员可以可靠地从单页应用程序生成 PDF,确保在文档中捕获所有必要的内容。
以上是如何使用 Puppeteer 从单页应用程序生成可靠的 PDF?的详细内容。更多信息请关注PHP中文网其他相关文章!