PDF in PHP erstellen
-
Verwenden Sie die Bibliothek
mpdf
, um PDF in PHP zu erstellen -
Verwenden Sie die Bibliothek
dompdf
, um PDF in PHP zu erstellen
In diesem Artikel werden Methoden zum Erstellen von PDFs in PHP vorgestellt. Wir werden die Daten aus der Datenbank holen, in das PDF packen und herunterladen.
Verwenden Sie die Bibliothek mpdf
, um PDF in PHP zu erstellen
Wir können die externe Bibliothek mpdf
verwenden, um ein PDF in PHP zu erstellen. Wir können die Daten aus der Datenbank abrufen, als PDF speichern und das PDF herunterladen. Mit dieser Bibliothek können wir PDF aus HTML-Dokumenten erstellen. Die HTML-Dokumente sollten in UTF-8 kodiert sein. Die dem PDF hinzuzufügenden Daten können wir aus der Datenbank im HTML-Format abrufen. Wir können es mit dem Befehl composer require mpdf/mpd
aus dem Projektverzeichnis herunterladen, um die Bibliothek zu verwenden. Der Befehl installiert die Bibliothek mpdf
im Projektverzeichnis. Eine vendor
-Datei wird erstellt, und wir müssen die Funktion require()
verwenden, um die Datei autoload.php
im Ordner vendor
einzubinden. Wir müssen sicherstellen, dass das Verzeichnis, in dem die Bibliothek installiert ist, Schreibberechtigung haben sollte.
Wir erstellen ein Objekt aus dem Konstruktor Mpdf()
und verwenden Methoden wie WriteHTML()
und output()
, um das PDF zu erstellen. Es gibt verschiedene Modi, in denen wir das PDF ausgeben können. Die Modi können wir im zweiten Parameter der Methode output()
angeben. Die verschiedenen Modi werden durch die Optionen D
, I
, F
und S
repräsentiert. Die Option D
lädt das PDF nach der Ausführung des Skripts zwangsweise herunter. Die Option I
zeigt das PDF im Browser an, nachdem das Skript ausgeführt wurde. Währenddessen lädt die Option F
die PDF-Speicherungen im Ordner relativ zur PHP-Datei herunter. Die Option F
schließlich gibt das PDF im Browser nur dann aus, wenn die Methode output()
einer Variablen zugewiesen ist.
Zum Beispiel haben wir eine Datenbank namens phprow
, die eine Tabelle namens Persons
enthält. Die Tabelle Personen
enthält folgende Daten.
+----------+----------+-----------+
| PersonID | Name | Address |
+----------+----------+-----------+
| 22 | Harry M | England |
| 32 | Paul P | France |
+----------+----------+-----------+
Verwenden Sie zunächst die Funktion require()
, um die Datei vender/autoload.php
einzubinden. Erstellen und bauen Sie dann eine Datenbankverbindung auf, führen Sie die SQL-Abfrage aus, um die Daten aus der Datenbank auszuwählen, und erstellen Sie eine Tabelle in der Variablen $html
. Verwenden Sie das .
Operator, um die Variable $html
mit den Tabellenkörpern zu verketten. Erstellen Sie eine Tabelle mit den Tabellenüberschriften ID
, Name
und Adresse
. Füllen Sie dann die Tabelle aus, indem Sie die oben gezeigten Daten aus der Tabelle Personen
abrufen.
Beispielcode:
require('vendor/autoload.php');
$con=mysqli_connect('localhost','root','','phprow');
$res=mysqli_query($con,"select * from Persons");
if(mysqli_num_rows($res)>0){
$html='<table>';
$html.='<tr><td>ID</td><td>Name</td><td>Address</td>';
while($row=mysqli_fetch_assoc($res)){
$html.='<tr><td>'.$row['PersonID'].'</td><td>'.$row['Name'].'</td><td>'.$row['Address'].'</td></tr>';
}
$html.='</table>';
}
Im obigen Beispiel haben wir eine Tabelle mit den Daten aus der Datenbank in der Variablen $html
hinterlegt. Wir haben das .
-Operator, um alle Tabellenelemente zu verketten. Auf diese Weise haben wir ein HTML-Dokument erstellt, das in ein PDF geschrieben werden kann.
Als nächstes erstellen Sie eine Variable namens $mpdf
. Weisen Sie der Variablen das Objekt des Konstruktors Mpdf()
mit dem Schlüsselwort new
zu. Rufen Sie die Funktion WriteHTML()
mit der Variablen $html
als Parameter mit dem Objekt auf. Erstellen Sie dann eine weitere Variable, $file
, um das PDF zu speichern. Verbinden Sie files/
mit der Funktion time()
und verketten Sie es erneut mit .pdf
, um den Dateinamen zu erstellen. Speichern Sie es in der Variablen $file
. Rufen Sie zuletzt die Funktion output()
mit $file
als erstem Parameter und der Option I
als zweitem Parameter auf.
Daher haben wir Daten aus der Datenbank abgerufen und ein PDF mit diesen Daten erstellt. Das folgende Beispiel erstellt eine Datei mit dem Namen der aktuellen Uhrzeit mit der Erweiterung .pdf
im Ordner files
. Das PDF wird nach der Ausführung des Skripts im Browser angezeigt. Wir können das PDF aus dem Browser herunterladen.
Beispielcode:
$mpdf=new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$file='files/'.time().'.pdf';
$mpdf->output($file,'I');
Verwenden Sie die Bibliothek dompdf
, um PDF in PHP zu erstellen
Die Bibliothek dompdf
ist auch eine Option, um ein PDF in PHP zu erstellen und herunterzuladen. Es lässt uns den HTML-Code in das PDF laden. Diese Bibliothek ist der Bibliothek mpdf
sehr ähnlich; nur die Methoden sind unterschiedlich. Wir verwenden Methoden wie loadHtml()
, render()
und stream()
. Wir müssen die Bibliothek mit dem Befehl composer require dompdf/dompdf
in unser Arbeitsverzeichnis herunterladen. Es erstellt den Ordner vendor
wie in der ersten Methode zusammen mit den Dateien composer.json
und composer.lock
.
Benötigen Sie beispielsweise die vendor/autoload.php
als erste Zeile des Codes im Programm. Schreiben Sie dann das Schlüsselwort use
, um die Klasse Dompdf
als use Dompdf/Dompdf
zu importieren. Wir können dieselbe HTML-Tabelle wie in der obigen Methode verwenden, um das PDF zu laden.
require 'vendor/autoload.php';
use Dompdf\Dompdf;
Nachdem Sie den HTML-Code in einer Variablen $html
gespeichert haben, erstellen Sie eine weitere Variable $dompdf
, um ein Objekt der Klasse Dompdf
zu erstellen. Rufen Sie dann die Methode loadHtml()
mit $html
als Parameter auf. Rufen Sie als nächstes die Funktion render()
und dann die Funktion stream()
mit dem Objekt $dompdf
auf.
Im folgenden Beispiel wird ein PDF mit der Tabelle wie in der ersten Methode erstellt. Die Methode render()
rendert den HTML-Code als PDF-Datei und die Methode stream()
gibt den gerenderten HTML-Code an den Browser aus. So können wir mit der Bibliothek dompdf
in PHP ein PDF erstellen.
Beispielcode:
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn