So fügen Sie HTML und CSS in PDF ein: PHP-Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum HTML+CSS in PDF eine Herausforderung ist (und wie man sie löst)



Stellen Sie sich vor: Sie entwickeln eine Website mit PHP, und der Kunde bittet: „Mach, dass der Button ‚PDF herunterladen‘ schöne Rechnungen, Berichte oder Zertifikate ausgibt.“ Sie denken: „Kein Problem! Ich nehme eine HTML-Vorlage, füge CSS-Stile hinzu und konvertiere sie in PDF.“ Doch die Realität erweist sich als schwieriger: Schriftarten verschwimmen, Tabellen zerfallen, und die CSS-Eigenschaft flexbox funktioniert nur manchmal.



Auf Stack Overflow hat die Frage „How can I add HTML and CSS into PDF“ tausende Aufrufe gesammelt. Das bedeutet, dass das Problem fast jedem PHP-Entwickler bekannt ist. In diesem Artikel werden wir drei beliebte Bibliotheken untersuchen – Dompdf, TCPDF und mPDF – und zeigen, wie man HTML mit CSS korrekt in PDF unter PHP konvertiert.



Sie erfahren:

  • Welche Bibliothek für verschiedene Aufgaben geeignet ist
  • Wie man CSS-Stile einbindet (extern, inline, @import)
  • Wie man typische Probleme löst: Kyrillisch, Tabellen, Bilder
  • Wie man funktionierenden Code zur PDF-Generierung aus HTML schreibt


Warum kann man HTML nicht einfach als PDF speichern?



Browser rendern HTML+CSS hervorragend, aber PDF-Generatoren sind keine Browser. Sie verwenden eigene Rendering-Engines, die nicht alle CSS-Eigenschaften unterstützen. Zum Beispiel:

  • flexbox und grid – funktionieren nicht überall
  • border-radius – wird teilweise unterstützt
  • @media print – kann ignoriert werden
  • Schriftarten (insbesondere Kyrillisch) – müssen eingebunden werden


Die gute Nachricht: Moderne PHP-Bibliotheken verbessern sich ständig, und mit dem richtigen Ansatz kann man ein PDF erhalten, das fast wie im Browser aussieht.



Überblick über Bibliotheken zur Konvertierung von HTML+CSS in PDF unter PHP



Betrachten wir die drei beliebtesten Werkzeuge. Jedes hat seine Stärken.



1. Dompdf

Vorteile: Leicht, einfach über Composer zu installieren, gute Unterstützung für CSS 2.1 und teilweise CSS3. Ideal für einfache Dokumente wie Rechnungen, Quittungen.

Nachteile: Schwache Unterstützung für komplexe Layouts (flexbox, grid), Probleme mit großen HTML-Mengen.



2. TCPDF

Vorteile: Stabil, leistungsstark, unterstützt Unicode (Kyrillisch), funktioniert ohne externe Bibliotheken. Ideal für komplexe PDF-Dateien mit Diagrammen, QR-Codes, mehrseitigen Tabellen.

Nachteile: Komplexe Syntax, CSS-Stile müssen manuell eingebunden werden, der Code wird umfangreich.



3. mPDF

Vorteile: Beste CSS-Unterstützung (einschließlich @media, float, position), hervorragende Arbeit mit Kyrillisch, Unterstützung für Stile aus externen Dateien. Gilt als „goldener Mittelweg“.

Nachteile: Schwerer als Dompdf, kann bei großen Dokumenten langsam sein.



Empfehlung: Für einen schnellen Start nehmen Sie Dompdf. Für ernsthafte Projekte – mPDF. TCPDF – wenn maximale Flexibilität benötigt wird und Sie bereit sind, mehr Code zu schreiben.



Praktisches Beispiel: PDF-Generierung aus HTML mit Dompdf



Lassen Sie uns echten Code schreiben. Installieren Sie Dompdf über Composer:



composer require dompdf/dompdf


Erstellen Sie nun ein PHP-Skript, das eine HTML-Vorlage in PDF konvertiert:



<?phprequire_once 'vendor/autoload.php';

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

// Einstellungen$options = new Options();$options->set('defaultFont', 'DejaVu Sans'); // Unterstützung für Kyrillisch$options->set('isRemoteEnabled', true); // Externe Bilder erlauben

$dompdf = new Dompdf($options);

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

Blogs

Buchempfehlungen