Puppeteer: Penjanaan PDF Dipercayai dengan Menunggu Penyiapan Halaman
Banyak aplikasi berasaskan web menghadapi isu menjana PDF daripada halaman web dengan cekap. Aplikasi satu halaman, khususnya, memberikan cabaran dalam hal ini. Artikel ini menangani masalah dan menyediakan penyelesaian untuk mereka yang menggunakan Puppeteer untuk menjana PDF.
Percubaan dan Cabaran Awal
Pendekatan awal mungkin melibatkan penggunaan page.waitFor('networkidle2 ') untuk menunggu sehingga aktiviti rangkaian telah stabil. Walau bagaimanapun, untuk aplikasi satu halaman, kaedah ini selalunya gagal menunggu untuk memuatkan halaman yang lengkap, yang membawa kepada dokumen PDF yang dipenggal.
Penyelesaian: Tunggu Navigasi
Penyelesaian yang lebih dipercayai ialah menggunakan page.waitForNavigation() untuk menunggu halaman baharu dimuatkan sepenuhnya sebelum menjana 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>
Kaedah ini memastikan bahawa PDF hanya dijana selepas keseluruhan proses navigasi selesai.
Menunggu Elemen Dinamik
Dalam keadaan di mana terdapat elemen yang dijana secara dinamik yang perlu disertakan dalam PDF, page.waitForSelector() boleh digunakan untuk memastikan kandungan dipaparkan sebelum meneruskan:
<code class="python">await page.waitForSelector('#example', { visible: true, });</code>
Dengan menggunakan teknik ini, pembangun boleh menjana PDF daripada aplikasi satu halaman dengan kebolehpercayaan, memastikan semua kandungan yang diperlukan ditangkap dalam dokumen.
Atas ialah kandungan terperinci Bagaimana untuk Menjana PDF yang Boleh Dipercayai daripada Aplikasi Satu Halaman Menggunakan Puppeteer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!