Mit PHP-Code die Ausgabe eines PHP-Scripts in eine pdf-Datei exportieren
Es gibt vielerlei Möglichkeiten, die Ausgabe eines PHP-Scripts in eine ".pdf"-Datei zu exportieren, aber leider ist das oft mit Java oder Javascript verbunden, oder eine entsprechende Bibliothek muss erst in PHP eingebunden werden, außerdem lässt es sich meistens nicht im PHP-Code selbst machen. Die meisten Lösungen sind arbeitsaufwändig oder kompliziert. Daher möchte ich eine Alternative dazu anbieten.
Um das ganze durchführen zu können, braucht ihr die Programme "wget" und "htmldoc". wget ist auf Linux standardmäßig dabei, htmldoc allerdings nicht, ladet es euch also zuerst einmal herunter. Es bietet sich an, das aus den jeweiligen Repositories zu machen. Wenn ihr es installiert habt, kann es auch schon losgehen. Zunächst müsst ihr in eurem PHP-Script mit "wget" die Ausgabe des gewollten PHP-Scripts in eine ".html"-Datei umleiten. Der Code dazu sieht so aus:
Mit "system();" wird ein Systembefehl ausgeführt, als hättet ihr ihn in der Konsole eingegeben. Die Option -O sagt wget, wie die html-Datei heißen soll, hier in "htmldatei.html". Achtet darauf, dass ihr bei der Angabe des Scriptes (In diesem Fall "phpscript.php") Anführungszeichen setzen müsst. Das ist notwendig, weil bei den Parametern die Zeichen "?" und "&" stehen. Wenn diese nicht von Anführungszeichen "entschärft" werden, interpretiert das System diese Zeichen anders (Sonderzeichen haben meistens eine besondere Beudeutung in der Konsole). Nun, da die html-Datei mit der Ausgabe des PHP-Scripts erstellt ist, müsst ihr mit htmldoc daraus ein PDF erzeugen. Der PHP-Code dazu ist folgendermaßen:
Nun ist die Datei "htmldatei.html" und damit die Ausgabe des PHP-Scripts in der Datei "pdfdatei.pdf" abgespeichert. Um unnötig viele Dateien zu vermeiden, löscht ihr am besten direkt noch die html-Datei:
Jetzt habt ihr die Ausgabe eures PHP-Scripts als PDF abgespeichert, allerdings ohne Farben, was vielleicht ein kleiner Nachteil ist.
Der Sinn des ganzen: Auf vielen Seiten gibt es einen Button namens "als PDF exportieren". So etwas könnt ihr hiermit realisieren. Ihr erstellt einfach mit HTML einen Button, der, wenn man auf ihn klickt, die aktuelle URL noch einmal aufruft, allerdings mit einem neuen, zusätzlichen Parameter, zum Beispiel "action=pdf". Ihr programmiert dann einfach ein if-Konstrukt in euer Script, das mit dem oben stehenden Code ausgestattet ist. Das könnte so aussehen:
Hier wird ein Button angegeben, der die Seite erneut aufruft und dann die Exportierung aktiviert. Dann wird eine Erfolgsmeldung ausgegeben. Die PDF-Datei wird nach den Parametern der aktuellen Seite benannt, damit hat man dann dynamische Dateinamen. Mit ein wenig mehr Code könnt ihr diese Datei auch direkt zum Download anbieten, zum Beispiel mit:
@Team: Wäre schön, wenn das in dieser Form auch bei den Tutorials stehen könnte.
mfg,
Athelstan
Es gibt vielerlei Möglichkeiten, die Ausgabe eines PHP-Scripts in eine ".pdf"-Datei zu exportieren, aber leider ist das oft mit Java oder Javascript verbunden, oder eine entsprechende Bibliothek muss erst in PHP eingebunden werden, außerdem lässt es sich meistens nicht im PHP-Code selbst machen. Die meisten Lösungen sind arbeitsaufwändig oder kompliziert. Daher möchte ich eine Alternative dazu anbieten.
Um das ganze durchführen zu können, braucht ihr die Programme "wget" und "htmldoc". wget ist auf Linux standardmäßig dabei, htmldoc allerdings nicht, ladet es euch also zuerst einmal herunter. Es bietet sich an, das aus den jeweiligen Repositories zu machen. Wenn ihr es installiert habt, kann es auch schon losgehen. Zunächst müsst ihr in eurem PHP-Script mit "wget" die Ausgabe des gewollten PHP-Scripts in eine ".html"-Datei umleiten. Der Code dazu sieht so aus:
Code:
system('wget "phpscript.php?parameter=1" -O htmldatei.html');
Mit "system();" wird ein Systembefehl ausgeführt, als hättet ihr ihn in der Konsole eingegeben. Die Option -O sagt wget, wie die html-Datei heißen soll, hier in "htmldatei.html". Achtet darauf, dass ihr bei der Angabe des Scriptes (In diesem Fall "phpscript.php") Anführungszeichen setzen müsst. Das ist notwendig, weil bei den Parametern die Zeichen "?" und "&" stehen. Wenn diese nicht von Anführungszeichen "entschärft" werden, interpretiert das System diese Zeichen anders (Sonderzeichen haben meistens eine besondere Beudeutung in der Konsole). Nun, da die html-Datei mit der Ausgabe des PHP-Scripts erstellt ist, müsst ihr mit htmldoc daraus ein PDF erzeugen. Der PHP-Code dazu ist folgendermaßen:
Code:
system('htmldoc --webpage -f pdfdatei.pdf htmldatei.html');
Nun ist die Datei "htmldatei.html" und damit die Ausgabe des PHP-Scripts in der Datei "pdfdatei.pdf" abgespeichert. Um unnötig viele Dateien zu vermeiden, löscht ihr am besten direkt noch die html-Datei:
Code:
system('rm htmldatei.html');
Jetzt habt ihr die Ausgabe eures PHP-Scripts als PDF abgespeichert, allerdings ohne Farben, was vielleicht ein kleiner Nachteil ist.
Der Sinn des ganzen: Auf vielen Seiten gibt es einen Button namens "als PDF exportieren". So etwas könnt ihr hiermit realisieren. Ihr erstellt einfach mit HTML einen Button, der, wenn man auf ihn klickt, die aktuelle URL noch einmal aufruft, allerdings mit einem neuen, zusätzlichen Parameter, zum Beispiel "action=pdf". Ihr programmiert dann einfach ein if-Konstrukt in euer Script, das mit dem oben stehenden Code ausgestattet ist. Das könnte so aussehen:
Code:
$parameter = GET['parameter']; // Die Parameter der aktuellen URL alle abspeichern, damit sie weiter als Parameter übergeben werden können
echo '<form action="phpscript.php?parameter='.$parameter.'&action=print"><input type="submit" value="Als PDF exportieren"></form>'; // Button für das Exportieren, ruft bei Anklicken das Script noch einmal auf, allerdings mit dem zusätzlichen "action=print"
if ( $_GET['action']=='print' ) { // Wenn die Seite mit "action=print" aufgerufen wurde, wird in eine PDF-Datei exportiert
system('wget "phpscript.php?parameter='.$parameter.'" -O '.$parameter.'.html');
system('htmldoc --webpage -f '.$parameter.'.pdf '.$parameter.'.html');
system('rm '.$parameter.'.html');
echo 'Erfolgreich exportiert<br><br>';
}
Hier wird ein Button angegeben, der die Seite erneut aufruft und dann die Exportierung aktiviert. Dann wird eine Erfolgsmeldung ausgegeben. Die PDF-Datei wird nach den Parametern der aktuellen Seite benannt, damit hat man dann dynamische Dateinamen. Mit ein wenig mehr Code könnt ihr diese Datei auch direkt zum Download anbieten, zum Beispiel mit:
Code:
echo '<meta http-equiv="refresh" content="0;URL='.$parameter.'.pdf">';
mfg,
Athelstan