كيفية إضافة HTML وCSS إلى PDF: دليل PHP مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا HTML+CSS إلى PDF هو صداع (وكيفية حله)



تخيل: أنت تطور موقعًا باستخدام PHP، ويطلب منك العميل: "اجعل زر 'تنزيل PDF' يقوم بتصدير فواتير جميلة أو تقارير أو شهادات". تعتقد: "سهل! سأخذ قالب HTML، وأضيف أنماط CSS، وأحوله إلى PDF". لكن الواقع يكون أكثر تعقيدًا: الخطوط تتشوه، الجداول تنهار، وخاصية CSS flexbox تعمل بشكل متقطع.



على Stack Overflow، سؤال "How can I add HTML and CSS into PDF" حصل على آلاف المشاهدات. هذا يعني أن المشكلة مألوفة لدى كل مطور PHP تقريبًا. في هذه المقالة، سنستعرض ثلاث مكتبات شائعة — Dompdf وTCPDF وmPDF — ونوضح كيفية تحويل HTML مع CSS إلى PDF بشكل صحيح باستخدام PHP.



ستتعلم:

  • أي مكتبة تختار لمهام مختلفة
  • كيفية تضمين أنماط CSS (خارجية، مضمنة، @import)
  • كيفية حل المشكلات النموذجية: السيريلية، الجداول، الصور
  • كيفية كتابة كود عملي لتوليد PDF من HTML


لماذا لا يمكنك ببساطة حفظ HTML كـ PDF؟



المتصفحات تقوم بعرض HTML+CSS بشكل ممتاز، لكن مولدات PDF ليست متصفحات. إنها تستخدم محركات عرض خاصة بها تدعم ليس كل خصائص CSS. على سبيل المثال:

  • flexbox وgrid — لا تعمل في كل مكان
  • border-radius — مدعوم جزئيًا
  • @media print — قد يتم تجاهله
  • الخطوط (خاصة السيريلية) — تتطلب تضمينًا


الخبر السار: مكتبات PHP الحديثة تتحسن باستمرار، ومع النهج الصحيح يمكنك الحصول على PDF يبدو تقريبًا كما في المتصفح.



نظرة عامة على مكتبات تحويل HTML+CSS إلى PDF في PHP



دعنا نستعرض ثلاث أدوات شائعة. لكل منها نقاط قوتها.



1. Dompdf

الإيجابيات: خفيف، سهل التثبيت عبر Composer، يدعم CSS 2.1 جيدًا وجزئيًا CSS3. مثالي للمستندات البسيطة — الفواتير، الإيصالات.

السلبيات: دعم ضعيف للتخطيطات المعقدة (flexbox, grid)، مشاكل مع كميات كبيرة من HTML.



2. TCPDF

الإيجابيات: مستقر، قوي، يدعم Unicode (السيريلية)، يعمل بدون مكتبات خارجية. مثالي لملفات PDF المعقدة مع الرسوم البيانية، رموز QR، الجداول متعددة الصفحات.

السلبيات: بناء جملة معقد، أنماط CSS تحتاج إلى تضمين يدوي، الكود يصبح ضخمًا.



3. mPDF

الإيجابيات: أفضل دعم لـ CSS (بما في ذلك @media وfloat وposition)، عمل ممتاز مع السيريلية، دعم الأنماط من الملفات الخارجية. يعتبر "الوسط الذهبي".

السلبيات: أثقل من Dompdf، قد يكون بطيئًا في المستندات الكبيرة.



توصية: للبدء السريع، استخدم Dompdf. للمشاريع الجادة — mPDF. TCPDF — إذا كنت بحاجة إلى أقصى مرونة ومستعد لكتابة المزيد من الكود.



مثال عملي: توليد PDF من HTML باستخدام Dompdf



دعنا نكتب كودًا حقيقيًا. سنقوم بتثبيت Dompdf عبر Composer:



composer require dompdf/dompdf


الآن سننشئ سكريبت PHP يحول قالب HTML إلى PDF:



<?phprequire_once 'vendor/autoload.php';

use Dompdf\\Dompdf;use Dompdf\\Options;

// الإعدادات$options = new Options();$options->set('defaultFont', 'DejaVu Sans'); // دعم السيريلية$options->set('isRemoteEnabled', true); // السماح بالصور الخارجية

$dompdf = new Dompdf($options);

// قالب HTML$html = '<!DOCTYPE html><html><head> <style> body { font-family: DejaVu Sans, sans-serif; } .invoice { width: 100%; max-width: 80

المدونات

توصيات الكتب