PDF-Berichte mit PHP generieren: Überblick über Bibliotheken und Werkzeuge
Das Erstellen von PDF-Dokumenten ist eine häufige Aufgabe in der PHP-Webentwicklung. Ob es um die Erstellung von Rechnungen, Berichten, Zertifikaten oder einfach um den Export von Daten in ein druckfreundliches Format geht, PHP bietet mehrere ausgereifte Lösungen. In diesem Artikel betrachten wir vier Hauptbibliotheken: TCPDF, FPDF, Dompdf und mPDF. Sie erfahren ihre Besonderheiten, Stärken und erhalten Codebeispiele für jede.
1. FPDF – leichter und schneller Klassiker
FPDF ist wohl die bekannteste Bibliothek zur PDF-Generierung in PHP. Sie benötigt keine externen Erweiterungen, funktioniert „out of the box“ und zeichnet sich durch hohe Geschwindigkeit aus. Der Hauptnachteil ist die eingeschränkte Unterstützung für komplexe CSS-Stile und HTML.
Beispiel für die Erstellung eines einfachen PDF-Berichts mit einer Tabelle:
<?phprequire_once('fpdf.php');
$pdf = new FPDF();$pdf->AddPage();$pdf->SetFont('Arial', 'B', 16);$pdf->Cell(40, 10, 'Verkaufsbericht');$pdf->Ln(20);
$pdf->SetFont('Arial', '', 12);// Tabellenüberschriften$pdf->Cell(60, 7, 'Produkt', 1);$pdf->Cell(30, 7, 'Menge', 1);$pdf->Cell(40, 7, 'Preis', 1);$pdf->Ln();
// Daten$items = [ ['Laptop', 5, 45000], ['Maus', 10, 1200], ['Tastatur', 7, 2500]];
foreach ($items as $item) { $pdf->Cell(60, 7, $item[0], 1); $pdf->Cell(30, 7, $item[1], 1); $pdf->Cell(40, 7, $item[2] . ' Rub.', 1); $pdf->Ln();}
$pdf->Output();?>Wann verwenden: für einfache Berichte, bei denen kein komplexes Layout benötigt wird, aber Geschwindigkeit und kleine Dateigröße wichtig sind.
2. TCPDF – leistungsstarkes Werkzeug für komplexe PDFs
TCPDF ist ein Fork von FPDF mit erweiterten Funktionen. Es unterstützt Unicode, JPEG2000, QR-Codes, SVG sowie die Arbeit mit HTML und CSS (eingeschränkt). Die Bibliothek wird aktiv weiterentwickelt und in Systemen wie Drupal und Moodle eingesetzt.
Beispiel für die Generierung eines Berichts mit HTML-Markup:
<?phprequire_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);$pdf->SetCreator(PDF_CREATOR);$pdf->SetAuthor('Ihr Unternehmen');$pdf->SetTitle('Monatsbericht');
$pdf->AddPage();$html = '<h2>Monatsbericht</h2><table border="1" cellpadding="5"> <tr style="background-color:#cccccc;"> <th>Kennzahl</th><th>Wert</th> </tr> <tr> <td>Umsatz</td><td>1.200.000 Rub.</td> </tr> <tr> <td>Ausgaben</td><td>850.000 Rub.</td> </tr> <tr> <td>Gewinn</td><td><strong>350.000 Rub.</strong></td> </tr></table><p>Erstellungsdatum: ' . date('d.m.Y') . '</p>';
$pdf->writeHTML($html, true, false, true, false, '');$pdf->Output('report.pdf', 'I');?>Wann verwenden: für komplexe Dokumente mit Tabellen, Bildern, nicht standardmäßigen Schriftarten und Unterstützung für Kyrillisch.
3. Dompdf – HTML in PDF verwandeln
Dompdf ist eine Bibliothek, die eine HTML-Seite in PDF rendert. Sie unterstützt CSS2.1 und teilweise CSS3, sodass Berichte mit vertrautem Layout erstellt werden können. Ideal für die Konvertierung vorhandener HTML-Vorlagen.
Beispiel für die Erstellung eines Berichts aus einer HTML-Vorlage:
<?phprequire_once 'dompdf/autoload.inc.php';use Dompdf\\Dompdf;
$dompdf = new Auch in der Bibliothek
Polars für Rust: Vollständiges Tutorial mit Beispielen
JSON-Verarbeitung in C++: Bibliotheken, Parsing und Datenserialisierung
WebSocket-Bibliotheken für Node.js: ws, Socket.IO und uWebSockets.js