"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية التأكد من اكتمال الصفحة قبل إنشاء ملفات PDF باستخدام محرك الدمى؟

كيفية التأكد من اكتمال الصفحة قبل إنشاء ملفات PDF باستخدام محرك الدمى؟

تم النشر بتاريخ 2024-11-09
تصفح:885

How to Ensure Page Completion Before Generating PDFs with Puppeteer?

إنشاء ملفات PDF باستخدام محرك الدمى: انتظار اكتمال الصفحة

عند إنشاء ملفات PDF من صفحات الويب باستخدام محرك الدمى، من الضروري الانتظار حتى يتم تحميل الصفحة بالكامل لضمان اكتمالها ودقة الوثيقة التي تم إنشاؤها. دعونا نتعمق في كيفية تحقيق ذلك دون اللجوء إلى التأخير اليدوي.

توفر طريقة page.waitForNavigation() طريقة موثوقة لانتظار أحداث التنقل في الصفحة، بما في ذلك التحميل الأولي للصفحة. باستخدام خيار Networkidle0، نحدد أن الوظيفة يجب أن تنتظر حتى لا يكون هناك المزيد من اتصالات الشبكة النشطة.

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

بمجرد تحميل الصفحة، يمكننا ملء نموذج تسجيل الدخول وإرساله.

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

بعد ذلك، يمكننا إضافة استدعاء waitForNavigation() إضافي للتأكد من اكتمال عملية تسجيل الدخول.

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

أخيرًا، يمكننا المضي قدمًا في إنشاء ملف PDF.

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

إذا واجهت حالات حيث يجب تضمين محتوى ديناميكي معين في ملف PDF، فيمكنك استكمال هذا الأسلوب باستخدام page.waitForSelector() لانتظار ظهور العنصر المحدد على الصفحة قبل إنشاء PDF.

await page.waitForSelector('#example', {
  visible: true,
});

باستخدام هذه التقنيات، يمكنك التأكد من أن محرك الدمى ينتظر تحميل الصفحة بالكامل قبل إنشاء ملف PDF، مما يؤدي إلى إنشاء مستند شامل ودقيق.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3