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中文網其他相關文章!