PDF in PHP erstellen

Subodh Poudel 18 Oktober 2021
  1. Verwenden Sie die Bibliothek mpdf, um PDF in PHP zu erstellen
  2. Verwenden Sie die Bibliothek dompdf, um PDF in PHP zu erstellen
PDF in PHP 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 Poudel avatar Subodh Poudel avatar

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

Verwandter Artikel - PHP PDF