html2pdf 

Das Modul html2pdf basiert auf dem unter GNU GPL veröffentlichten html2ps/pdf von tufat.com in der Version 1.9.4.
Wir haben uns unter den vielen möglichen html2pdf-Scripten für dieses entschieden, weil wir den Eindruck haben, dass dieses verschachtelte HTML-Strukturen (wie Tabellen in Tabellen, Layer in Layern, etc.) und CSS-Anweisungen am zuverlässigsten umsetzt. - Jedenfalls unter den von uns getesteten html2pdf-Scripten und Testumgebungen.

Einige der Funktionen, die das Tufat-Script von Hause aus mitbringt, sind in der Version für Website-Baker deaktiviert, da in der von uns hier veröffentlichten beta-(!!)-Version noch Konflikte mit WB auftraten.

Neben der Möglichkeit, aus jeder einzelnen Seite ein pdf-Dokument zu erzeugen (siehe: Integration, 1.), bietet das Modul auch die Möglichkeit, mehrere Seiten Ihrer Homepage erst in der Session des Besuchers zwischenzuspeichern und abschließend als zusammenhängendes pdf-Dokument zu erzeugen (siehe: Integration 2. & 3.).

Download:
Sie können sich das Zip-File hier herunterladen.

Installation und Deinstallation:
Wie jedes andere Modul bei Website-Baker auch.

Falls die Uploadbeschränkung auf Ihrem Server zu niedrig für eine Installation ist, z.B. 2MB (siehe phpinfp.php unter PHP Core -> upload_max_filesize), so müssen Sie diese auf mindestens 5 MB erhöhen. Hierzu legen Sie im "document root"-Verzeichnis Ihres Servers eine Datei mit dem Namen ".htaccess" an. Deren Inhalt:
php_value upload_max_filesize 10M
php_value max_execution_time 800
und alles wird gut, wie Sie mittels phpinfo.php prüfen können.

Bei einigen vServern kann es zu Problemen mit dem zugewiesenen "memory_limit" kommen, welches notwendig ist, um die pdf-Dateien im Hintergrund zu berechnen. Nicht davon beendrucken lassen, einfach per .htaccess erhöhen:
php_value memory_limit 128M

Konfiguration:
Das Modul bringt eine funktionsfähige Konfigurationsdatei mit. Sie können diese online per Browser Ihren persönlichen Bedürfnissen anpassen. Sie finden die hierzu nötige Datei unter

http://{Ihr Server}/{Website-Baker-Pfad}/modules/html2pdf/configure.php

Achten Sie darauf, dass die Lese- und Schreibrechte im Pfad /html2pdf über chmod auf 0777 gesetzt sind!

Integration ins Template:

1. Link, um von einer Seite direkt ein PDF zu generieren:
Den html2pdf-Link in Ihrem Template erzeugen Sie mit der Funktion html2pdf_link($title, $target = "_blank"); .

Als $title können Sie einen ganz normalen Text , z.B. $title = "Mach mir pdf!";
oder auch ein Image verwenden: $title = "<img src='".TEMPLATE_DIR."/pdf.gif' border='0' />";

Die Variable $target funktioniert, wie Sie es von ihr erwarten. 

Im Template steht dann z.B. folgendes:
<?php $title="<img src='".TEMPLATE_DIR."/PDF.gif' border='0' />"; html2pdf_link($title, "_blank"); ?>

2. Link, um erst eine Seite ins "PDF-Booklet" zu übernehmen:

Dieses Verfahren dient dazu, dass der Besucher Ihrer Webseite, einige Seiten sozusagen "sammeln" kann und diese dann zusammenhängend in einem einzigen "PDF-Booklet" erzeugt.

Benutzen Sie hierfür die Funktion: pdf2session_link($title);
Die aktuelle Seite wird in die $_SESSION übernommen und per Javascript alert() bestätigt.

3. Link zur Erzeugung des Booklets:

Hierzu dient die Funktion: booklet2pdf_link($title, $target);

Je nach Größe des Booklets und Systemressourcen Ihres Servers kann der Vorgang, ein Booklet zu erstellen, schon mal einen Augenblick dauern. Wir empfehlen, Ihre Besucher ggfs. darauf entsprechend hinzuweisen.

 

Hinweise:

A:
Sie brauchen die Funktion html2pdf_link() nicht zu verwenden, Sie können die zur PDF-Erstellung nötigen Daten auch per GET oder POST an die Zieldatei http://{Ihr Server}/{Website-Baker-Pfad}/modules/html2pdf/html2pdf.php übermitteln.
Die Datei http://{Ihr Server}/{Website-Baker-Pfad}/modules/html2pdf/testit.php zeigt Ihnen, wie es geht.

B:
Es ist mit diesem Modul (derzeit) nicht möglich, per Javasript generierte Layouts als PDF zu exportieren. Also beispielsweise Inhalte, die mit dem Modul "google-map" erstellt wurden, lassen sich nicht als PDF exportieren. Wir empfehlen daher eine "pdf.css" zu erstellen, die einen Workaround für dieses Problem anbietet, um dem Besucher Ihrer Homepage in solchen Fällen dennoch einen PDF-Export ermöglicht.

C:
Beachten Sie bitte, dass das PDF auf dem Server generiert wird. Individuelle, einem bestimmten - z.B. eingeloggten - User zugewiesene Einstellungen, wie individuelle Menu-Strukturen, gehen im pdf-Dokument also verloren.

Soll dem Besucher der Webseite dennoch ermöglicht werden, Seiten als PDF zu erzeugen, die sich in zugangsbeschränkten Bereichen der Homepage befinden, sind einige Änderungen im Frontend von Website-Baker notwendig.

Die Änderungen im WB-Frontend im Einzelnen:

1. Datei "class.wb.php" in der function show_page($page), Zeile 51
von
"if($this->is_authenticated() == true) {"
ändern in:
"if($this->is_authenticated() == true OR $_SERVER["SERVER_ADDR"] == $_SERVER["REMOTE_ADDR"]) {"

2. Datei "class.frontend.php" in der function get_page_details(), Zeile 201
von
"if($this->is_authenticated() == false) {"
ändern in
"if($this->is_authenticated() == false AND $_SERVER["SERVER_ADDR"] != $_SERVER["REMOTE_ADDR"]) {"

Dies führt bei Programmieren, die auf "localhost" entwickeln dazu, dass im Browser auch Seiten angezeigt werden können, die als "private" oder "registered" markiert und ggf. nur bestimmten Benutzergruppen zugewiesen sind. Sobald die Homepage jedoch produktiv auf einen anderen Server gestellt wird, löst sich dieses Problem von selbst, da sich dann Server-IP und Client-IP unterscheiden.

Die Routinen von "show_menu()" und "show_menu2()" sind hiervon nicht betroffen. Sie zeigen auch weiterhin nur die der jeweiligen Benutzergruppe zugewiesenen Seiten an.

D:
Bei der Konvertierung mehrsprachiger UTF-8-kodierter Seiten kann es zu Zeichensatz-Problemen kommen. Die Verwendung eines kompletten UTF-8-Zeichensatzes (wie z.B.  Arial Unicode MS) scheint hier Abhilfe schaffen zu können. Genauere Prüfungen stehen jedoch noch aus. (Siehe dazu auch hier.)

E:
Wenn Sie mittels des Apache-Moduls mod_rewrite Pfade in Subdomains "umbiegen" (oder dergleichen) kann (muss aber nicht) dies zu Problemen führen. Passen Sie ggfs. die automatische Pfadgenerierung in der Datei include.php entsprechend an.

 

getestete Umgebungen:

Jeweils unter PHP 4.3.x und PHP 5.1.x läuft es - zumindest bei uns - "quick and dirty". Wir verwenden jedoch keine LAMPP oder XAMPP-Pakete, sondern arbeiten mit "sauberen" Systemen.

Für Leute, die Probleme mit dem Aufsetzen von Linux-Servern haben, ist vielleicht diese Seite ganz hilfreich.

Auf Windows-Plattformen soll es in Kombination mit XAMPP zu Problemen kommen. Da wir nicht auf Windows arbeiten, gelingt es uns leider derzeit noch nicht, den hier beschriebenen Fehler zu reproduzieren. Wir hoffen jedoch, dass dieser Hinweis hilfreich ist.
 

 

Wir wünschen Ihnen viel Freude mit diesem Modul, weisen aber ausdrücklich darauf hin, dass wenn Sie es benutzen wollen, dieses auf eigenes Risiko tun.