PDF-Ausgabe
Voraussetzungen:
- openEngine 1.6 im Verzeichnis /htdocs
- Installation/Kopie der Dateien von HTML2PDF (3.0.2beta) in /htdocs/system/addOns/pdf
In /htdocs/system/addons/pdf sieht es nach der Installation wie folgt aus:
/font ...
credits.txt
fpdf.php
gif.php
html2pdf.php
htmltoolkit.php
licence.txt
no_img.gif
source2doc.php
Ziel: Aus der Menü-Leiste die PDF-Ausgabe eines jeden Page-Inhalts in ein neues Fenster veranlassen.
Schritt 1: Bereichsdefinition der Ausgabe-Inhalte.
Um auf die verschiedenen Seiteninhalte mittels Javascript zugreifen zu können, werden in allen Templates in den index.php-Dateien die "text"-<div>-Tags um das id-Attribut id="text" erweitert:
<!-- Text START -->
<div class="text" id="text">
Anmerkung: Man kann auch einen anderen Bereich für die Ausgabe vorsehen; er muss sich nur per DOM identifizieren lassen.
Schritt 2: Anlegen eines php-Skriptes für die PDF-Ausgabe.
Im Verzeichnis /htdocs/templates wird eine Datei pdf.php angelegt mit folgendem Inhalt:
<?
if ( $_POST["xport"] <> "" ) {
include("../system/addOns/pdf/html2fpdf.php");
$pdf=new HTML2FPDF();
$pdf->lMargin=20;
$pdf->AddPage();
$pdf_footer="© 2005 ".$_SERVER["HTTP_HOST"];
$pdf->writeHTML(stripslashes($_POST["xport"]),$pdf_footer);
$pdf->Output();
$pdf->Close();
exit;
}
?>
Erläuterungen:
Der auszugebende Inhalt wird in der POST-Variable "xport" übergeben. Nur wenn ein Inhalt vorhanden ist, wird der Rest durchgeführt.
Es wird eine neue Instanz von HTML2FPDF erzeugt, der linke Rand auf 20 (Millimeter) gesetzt, eine PDF-Ausgabe-Page erzeugt und die Fußzeile mit einem Inhalt besetzt.
writeHTML übergibt Inhalt und Fußzeile an die Instanz.
output() hat verschiedene Ausgabemöglickeiten (in eine Datei, als String, zur Standardausgabe). Hier wird die Standardausgabe verwendet; also am besten kein Parameter. Da der Content-Typ im Header der Ausgabe mitgeschickt wird ( Header('Content-Type: application/pdf'); ) - siehe Funktion output() in der Datei fpdf.php - darf halt nicht anderes in dem Fenster vorher stehen.
Zuletzt schliessen der Ausgabe und beenden der Instanz mit exit.
Schritt 3: Aufrufen des pdf.php-Skriptes
In der Datei /htdocs/templates/nav_generic.php die Menü-Zeile (da wo auch die Druckausgabe veranlaßt wird) die folgenden Zeilen plazieren:
<form method="post" name="x"
action="templates/pdf.php" target="_blank" >
<input type="hidden" name="xport" value="">
<a href="Javascript:x.xport.value=document.getElementById('text').innerHTML;
x.submit()">PDF</a>
</form>
Für die Übergabe wird ein kleines Formular verwendet. Das Übergabe-Feld (namens xport) ist versteckt. Der Auslöser besetzt dieses Feld mit dem document.getElementById('text').innerHTML -Aufruf und schickt mit x.submit() das Ganze zum in action angegebenen Skript für ein neues Fenster (target="_blank") ab





