Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | HTML mit Dompdf in PDF konvertieren

PHP Master | HTML mit Dompdf in PDF konvertieren

Lisa Kudrow
Lisa KudrowOriginal
2025-02-23 10:36:11779Durchsuche

PHP Master | HTML mit Dompdf in PDF konvertieren

PDF ist ein Standardformat, das ursprünglich von Adobe zur Darstellung von Text und Bildern in einem Dokument festgelegt wurde. Es ist nicht ungewöhnlich, dass eine Webanwendung im PDF -Format das Herunterladen von Daten wie Rechnungen oder Berichten unterstützt. Dompdf ist eine großartige Bibliothek, die in der Lage ist, einen PDF aus HTML Markup- und CSS -Stilen zu generieren (es handelt sich hauptsächlich um CSS 2.1 -konform und unterstützt einige CSS3 -Eigenschaften). Wir können entscheiden, wie unser Inhalt mit diesen vertrauten Technologien aussehen sollte, und umwandeln dies dann einfach in ein festes Dokument um. Die Bibliothek hat auch viele andere nützliche und interessante Funktionen.

Key Takeaways

  • dompdf ist eine PHP -Bibliothek, die HTML -Markup- und CSS -Stile in ein PDF -Dokument umwandeln kann, was es für Webanwendungen nützlich macht, die das Herunterladen von Daten im PDF -Format unterstützen müssen.
  • Um Dompdf zu verwenden, muss es über GitHub oder Komponist installiert werden und benötigt Php> = 5.0, wobei die Mbstring- und DOM -Erweiterungen aktiviert sind. HTML -Markup kann als Zeichenfolge oder aus einer Datei oder URL geladen und dann zu einem PDF gerendert werden.
  • dompdf bietet einen Bereich von Konfigurationsoptionen, um das PDF auf bestimmte Anforderungen wie Papiergröße, Seitenorientierung und Zeichencodierung zuzuordnen. Es ermöglicht auch eine fortgeschrittene Verwendung, z. B. das Speichern des generierten PDF auf Scheibe oder Hinzufügen von Headern oder Fußzeilen.
  • Während Dompdf ein leistungsstarkes Werkzeug ist, hat es einige Einschränkungen, z. Es wird empfohlen, die Dokumentation und den Quellcode der Bibliothek zu überprüfen, um die Fähigkeiten und potenziellen Probleme vollständig zu verstehen.

Erste Schritte

Dompdf ist auf GitHub erhältlich und kann mit Composer installiert werden. Eine Komponisten-basierte Installation korrekt zu erhalten, ist zugegebenermaßen noch etwas schwierig. Ich empfehle daher, nur Git für die Installation von Dompdf zu verwenden. Die Bibliothek erfordert Php> = 5.0, wobei die Mbstring- und DOM -Erweiterungen aktiviert sind. Es benötigt auch einige Schriftarten, die in den meisten Maschinen im Allgemeinen erhältlich sind. Navigieren Sie zu dem, wo Sie die Bibliothek einsetzen und ausführen möchten:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Schreiben wir mit Dompdf, das heruntergeladen wurde, ein kurzes Beispiel, das ein einfaches PDF generiert.
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
Um die Bibliothek in einem Projekt zu verwenden, ziehen wir zunächst dompdf_config.inc.php ein, das den größten Teil der Dompdf -Konfiguration enthält. Außerdem wird ein Autoloader und eine benutzerdefinierte Konfigurationsdatei geladen, in der wir Standardkonfigurationsparameter überschreiben können. HTML -Markup wird als Zeichenfolge für die Methode load_html () angegeben. Alternativ können wir Markup aus einer Datei oder URL unter Verwendung der Methode load_html_file () laden. Es akzeptiert einen Dateinamen oder die URL einer Webseite als Argument. Die Render () -Methode macht das HTML in PDF und wir sind bereit, die PDF -Datei abzuwerfen. Stream () sendet das resultierende PDF als Anhang an den Browser. Die Stream () -Methode hat einen optionalen zweiten Parameter, ein Array von Optionen:
  • Akzeptieren-boolean, senden Sie den Header „Akzeptieren“ (standardmäßig falsch).
  • Anhang-Boolean, Senden Sie die Header „Inhaltsdisposition: Anhang“, die den Browser dazu zwingt, eine speichernde Eingabeaufforderung anzuzeigen (standardmäßig True).
  • Kompress - boolean, Inhaltskomprimierung aktivieren (standardmäßig true).
Wir haben hier eine sehr einfache PDF generiert, aber das ist nicht sehr praktisch. In Wirklichkeit haben wir häufig Anforderungen an Papiergröße, Seitenorientierung, Charaktercodierung usw. Es gibt eine Reihe von Konfigurationsoptionen, die wir so einstellen können, dass Dompdf für unsere realen Anforderungen geeigneter werden. Alle von ihnen werden in dompdf_config.inc.php aufgeführt und erklärt Das setzt sie auf ihre Standardwerte. Sie können diese Werte ändern, indem Sie die benutzerdefinierte Konfigurationsdatei dompdf_config.custom.inc.php aktualisieren. Einige der wichtigen Einstellungen sind:
  • dompdf_default_paper_size - Legt die Standardpapiergröße für das PDF -Dokument fest. Unterstützte Papiergrößen finden Sie in include/cpdf_adapter.cls.php (der Standardwert ist „Buchstabe“).
  • dompdf_temp_dir - Gibt das von Dompdf verwendete temporäre Verzeichnis an. Stellen Sie sicher, dass dieser Ort vom Webserverkonto beschreibbar ist.
  • dompdf_unicode_enabled - Legt fest, ob der PDF Unicode -Schriftarten verwendet (die Standardeinstellung ist wahr).
  • dompdf_enable_remote - Aktiviert die Aufnahme von Bildern oder CSS -Stilen von Remote -Websites (Standard ist falsch).
  • debug_layout - ob Sie in der PDF -Datei ein Box um jeden HTML -Block rendern, der zum Debuggen des Layouts nützlich ist (Standard ist falsch).

Erweiterte Verwendung

Sprechen wir nun über einige erweiterte Verwendungen von Dompdf. Vielleicht möchten wir das generierte PDF -Dokument auf Festplatten speichern, anstatt es an den Browser zu senden. So wie: wie:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Anstatt Stream () wie im vorherigen Beispiel aufzurufen, verwenden wir output (), wodurch die PDF als Zeichenfolge zurückgegeben wird. Auch akzeptiert ein optionales Options -Array, die einzige verfügbare Option ist jedoch die Komprimierung (die Standardeinstellung ist wahr). Dompdf ermöglicht es uns außerdem, dem generierten PDF eine Header oder Fußzeile zu fügen, indem wir ein PHP -Skript in das HTML einbetten, das es rendert. Da die Verarbeitung beliebiger Code jedoch ein Sicherheitsrisiko darstellen kann, wenn Sie nicht vorsichtig sind, ist der Konfigurationswert, der diese Funktionalität steuert, standardmäßig ausgeschaltet. Wir müssen zuerst die Option Dompdf_enable_Php true festlegen. Sobald wir die Inline -PHP -Ausführung aktiviert haben, wird das PDF -Objekt im Skript verfügbar gemacht, mit dem wir die Seite manipulieren können. Wir können Text, Zeilen, Bilder, Rechtecke usw. überall auf der Seite hinzufügen.
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
Das Skript ist direkt in das HTML -Markup eingebettet und öffnet zunächst ein Objekt, damit wir das Rendering beeinflussen können. Alle Zeichnen werden in dieses Objekt aufgezeichnet und wir können dieses Objekt zu allen oder ausgewählten Seiten hinzufügen (obwohl es Einschränkungen gibt). Als nächstes holen wir die tatsächliche Breite und Höhe der Seite, um die Koordinaten der Fußzeile zu berechnen, die wir hinzufügen möchten. Außerdem müssen wir ein Schriftobjekt bereitstellen, während wir Textinhalte hinzufügen. FONT_Metrics :: get_font () können wir das von uns benötigte Objekt erstellen. Wir nehmen auch die Höhe der gegebenen Schriftart an der Schriftgröße mit Get_Font_Height (), um die Positionierung für den Inhalt des Fußzeilens zu berechnen. Die Methode get_font_width () gibt die Breite unseres Textes für die gegebene Schrift- und Schriftgröße zurück, die auch in unseren Berechnungen verwendet wird. Die Linie () -Methode zeichnet eine Linie von Punkt (x1, y1) nach (x2, x2). Beachten Sie, dass der von uns bereitgestellte Farbwert kein tatsächlicher RGB -Wert ist. Die zugrunde liegende PDF -Klasse erfordert Werte zwischen 0 und 1, und so konvertieren wir die RGB -Werte in diese neuen Werte. Um eine bessere Annäherung zu erhalten, können Sie es durch 255 teilen. Wir fügen die Seitennummer für jede Seite mit der Methode Page_text () hinzu, die eine X- und Y -Position, den zugegebenen Text, ein Schriftobjekt, eine Schriftgröße und Farbe akzeptiert. Dompdf ersetzt automatisch die Werte für {page_num} und {page_count} auf jeder Seite und stellt uns $ pdf zur Verfügung. Wenn der PDF -Abschnitt der PDF rendert, sieht der Fußzeilenabschnitt so aus:

PHP Master | HTML mit Dompdf in PDF konvertieren

Es ist möglich, Inline -PHP zu vermeiden und den gleichen Effekt direkt von PHP zu erzielen, wie dies:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Beachten Sie, dass wir den Code platzieren, nachdem wir $ dompdf-> render () aufgerufen haben, da wir den gerenderten PDF im Wesentlichen ändern.

Schlussfolgerung

In diesem Artikel haben wir besprochen, wie HTML mit Dompdf problemlos in PDF konvertiert werden kann. Obwohl Dompdf eine großartige Bibliothek ist, ist es keine kugelsichere Lösung für die Erzeugung von PDF -Dokumenten. Es hat einige Einschränkungen und Probleme. Dompdf ist nicht wirklich tolerant gegenüber schlecht geformten HTML, und große Tische können leicht den Speicher mehr haben. Einige grundlegende CSS -Funktionen wie Float werden nicht vollständig unterstützt und es gibt nur eine begrenzte Unterstützung für CSS3. Wenn Sie Funktionen benötigen, die nicht von Dompdf unterstützt werden, ist möglicherweise eine bessere Lösung für Sie. Dennoch ist Dompdf ziemlich einfach und für die meisten PDF -Exportanforderungen geeignet. Es ist wirklich schwierig, alle Funktionen einer Bibliothek in Artikel wie diesem zu erklären. Schauen Sie sich also auch die Dokumentation und den Quellcode an, um über coole Funktionen wie das Hinzufügen von Rückrufen, die Verwendung benutzerdefinierter Schriftarten usw. zu erfahren. Ich freue mich, Ihnen in meinem begrenzten Fachwissen zu helfen. Fühlen Sie sich frei, Ihre Fragen zu hinterlassen und Ihre Erfahrungen im Kommentarbereich zu teilen. Bild über Fotolien Und wenn Sie es genossen haben, diesen Beitrag zu lesen, werden Sie Lernable lieben. Der Ort, um frische Fähigkeiten und Techniken von den Meistern zu erlernen. Mitglieder erhalten sofortigen Zugriff auf alle eBooks und interaktiven Online -Kurse von SitePoint, wie Sprung Start Php. Kommentare zu diesem Artikel sind geschlossen. Haben Sie eine Frage zu PHP? Warum nicht in unseren Foren fragen?

häufig gestellte Fragen (FAQs) zum Konvertieren von HTML in PDF mit Dompdf

Was ist dompdf und warum wird es verwendet? Es wird verwendet, weil es komplexe HTML -Layouts, einschließlich CSS -Stile, JavaScript und Bilder, verarbeiten kann. Es ist ein leistungsstarkes Tool für Entwickler, die PDF -Dokumente aus HTML -Inhalten generieren müssen. Es ist einfach zu bedienen, flexibel und kann in eine PHP -Anwendung integriert werden. Sie können den Komponisten installieren und dann den Befehl "Komponist benötigen Dompdf/Dompdf" aus. Dadurch wird die Dompdf -Bibliothek in Ihrem Projekt heruntergeladen und installiert.

Kann ich CSS mit Dompdf? Sie können Inline -CSS in Ihrem HTML verwenden oder zu einer externen CSS -Datei verlinken. Dompdf wird die Stile anwenden, wenn die PDF generiert wird. Bitte beachten Sie jedoch, dass nicht alle CSS -Eigenschaften unterstützt werden. . Das Attribut "SRC" sollte auf die Bilddatei verweisen. Dompdf enthält das Bild in das erzeugte PDF.

Kann ich ein PDF mit mehreren Seiten erstellen? Wenn Ihr HTML -Inhalt lang genug ist, um mehrere Seiten zu überspannen, wird Dompdf automatisch in Seiten aufgeteilt. Sie können auch Seitenunterbrechungen mit CSS manuell hinzufügen. Beispielsweise können Sie "$ dompdf-> set_paper ('A4', 'Landscape') 'verwenden, um die Seitengröße auf A4 und die Orientierung an der Landschaft zu setzen.

Kann ich Dompdf mit Laravel verwenden?

Ja, Dompdf kann mit Laravel verwendet werden. Es gibt ein Laravel-Paket namens "Laravel-Dompdf", das eine einfache Möglichkeit bietet, Dompdf in einer Laravel-Anwendung zu verwenden. Die generierte PDF zu einer Datei mit der Methode "Ausgabe" und der Funktion "file_put_contents". Beispielsweise können Sie 'file_put_contents (' mypdf.pdf ', $ dompdf-> output ()) verwenden, um die PDF in einer Datei mit dem Namen' mypdf.pdf 'zu speichern.

Kann ich das generierte PDF senden Als Antwort in einer Webanwendung?

Ja, Sie können das generierte PDF als Antwort in einer Webanwendung senden. Sie können die Methode "Stream" verwenden, um das PDF direkt an den Browser zu senden. Es ist wichtig, Ihre Dompdf -Installation auf dem neuesten Stand zu halten und die vom DompDF -Team bereitgestellten Sicherheitsrichtlinien zu überprüfen.

Das obige ist der detaillierte Inhalt vonPHP Master | HTML mit Dompdf in PDF konvertieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Sammelkurse in PHPNächster Artikel:Sammelkurse in PHP