توليد PDF في PHP: نظرة شاملة على الأدوات والمكتبات
يعد توليد مستندات PDF من جانب الخادم إحدى المهام الشائعة في تطوير الويب. من الفواتير والتقارير إلى الشهادات والكتب، يظل تنسيق PDF هو المعيار لتبادل المستندات. في PHP، توجد العديد من المكتبات الناضجة، ولكل منها نقاط قوتها. في هذه المقالة، سنستعرض أربع أدوات رئيسية: FPDF وTCPDF وDompdf وmPDF، وسنقدم أمثلة على الكود ونساعدك في اختيار الحل المناسب لمشروعك.
1. FPDF — مكتبة خفيفة وسريعة
FPDF هي واحدة من أقدم وأشهر المكتبات لتوليد PDF في PHP. لا تتطلب تبعيات خارجية، وتعمل بسرعة، وهي مثالية للمستندات البسيطة: الفواتير والإيصالات والشهادات.
التثبيت
composer require setasign/fpdfمثال: PDF بسيط مع نص وصورة
<?phprequire_once 'vendor/autoload.php';
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'مرحبًا بالعالم!');$pdf->Image('logo.png', 10, 20, 30);$pdf->Output();?>يدعم FPDF:
- العمل مع خطوط مختلفة (TrueType, Type1)
- إنشاء الجداول والخلايا متعددة الأسطر
- إدراج الصور (JPEG, PNG, GIF)
- ترقيم الصفحات، الرؤوس والتذييلات
العيب: دعم محدود لـ HTML وCSS — يجب إنشاء جميع العناصر برمجيًا.
2. TCPDF — أداة قوية للمستندات المعقدة
TCPDF هي نسخة مطورة من FPDF، تضيف دعم Unicode ووسوم HTML وSVG والتوقيعات الرقمية ورموز QR وغيرها الكثير. مثالية لإنشاء الفواتير والشهادات والتقارير ذات الجداول.
التثبيت
composer require tecnickcom/tcpdfمثال: PDF مع محتوى HTML وجدول
<?phprequire_once 'vendor/autoload.php';
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->AddPage();$html = '<h1>عنوان</h1><table border="1"><tr><td>خلية 1</td><td>خلية 2</td></tr></table>';$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('example.pdf', 'I');?>الإمكانيات الرئيسية لـ TCPDF:
- دعم كامل لـ Unicode (UTF-8) والسيريلية
- قوالب مدمجة، ترقيم الصفحات
- رسومات متجهة (SVG، نماذج PDF)
- توقيعات رقمية، تشفير
- دعم JavaScript في PDF
3. Dompdf — التوليد من HTML/CSS
Dompdf يسمح بإنشاء PDF من ترميز HTML، مع معالجة CSS (بما في ذلك Flexbox وGrid واستعلامات الوسائط). مثالي إذا كان لديك بالفعل قوالب ويب أو تريد تحويل صفحة HTML بسرعة إلى PDF.
التثبيت
composer require dompdf/dompdfمثال: PDF من سلسلة HTML
<?phpuse Dompdf\\Dompdf;
require_once 'vendor/autoload.php';
$dompdf = new Dompdf();$html = '<h2 style="color:blue;">مرحبًا من Dompdf!</h2><p>هذا PDF تم توليده من HTML.</p>';$dompdf->loadHtml($html);$dompdf->setPaper('A4', 'portrait');$dompdf->render();$dompdf->stream("document.pdf");?>ميزات Dompdf:
- دعم CSS 2.1 وجزئيًا CSS3
- العمل مع الصور والخطوط (محلية وخطوط Google)
- دعم مدمج للسيريلية عند استخدام الخطوط الصحيحة
- تكامل بسيط مع الأطر (Laravel, Symfony)
هام: للتخطيطات المعقدة مع JavaScript أو الرسوم المتحركة