PHP PDF Dokumente erstellen

xSeppelx

Lt. Junior Grade
Registriert
Sep. 2009
Beiträge
384
Hi,

hab etwas in PHP vor und zwar möchte ich hergehen und eine Liste, erst mal egal in welcher Form, vlt. manuell in einem Array, die URLs enthält verarbeiten.
Ich möchte von den URLs die Seite fetchen und ein PDF-Dokument erstellen, also ein Abbild.

Geht das Grundsätzlich? Streiken da manche Seiten? Probleme mit Werbung ggf.?

Wenn ja gibt es grundsätzlich dafür ein gutes PDF-Framework?
Und welche Informationen muss ich von der betreffenden Seite beziehen?
 
http://www.fpdf.org/

Damit hab ich einiges gebaut. Rudimentär, aber funktional :) Mit FPDI kannste auch bestehende PDFs importieren und als Templates verwenden. Signierte PDFs kann man damit auch erstellen.

Edit: Ach du willst ne Webseite in ein PDF bauen? Dann mach einen Screenshot von der Webseite (geht auch automatisiert) und Pack diesen Screenshot ganzseitig ins PDF :)
 
Zuletzt bearbeitet:
tcpdf als "nachfolger" von fpdf würde ich eher empfehlen, da stärker daran entwickelt wird. So oder so, eine HTML Seite in PDF zu konvertieren... das funktioniert natürlich nicht immer super. Und den Sinn dahinter sehe ich auch nicht so recht.

Auch ich wäre eher für die Screenshot Lösung.
 
bu1137 schrieb:
So oder so, eine HTML Seite in PDF zu konvertieren... das funktioniert natürlich nicht immer super.

Es gibt eine angeblich hinsichtlich des Renderings quasi makellose Lösung für HTML->CSS, ich habe sie aber leider noch nicht testen können. Der Knackpunkt: Es ist kein PHP-Script oder sowas, sondern ein eigenständiges Programm für Linux, dass den HTML-Code durch einen Webkit-Renderer schickt und das Ergebnis als PDF rauspumpt. Der Vorteil ist halt, dass man, aktuelle Webkit-Libraries vorausgesetzt, vollen Zugang zu HTML5+CSS3 hat. Absolutes WYSIWYG gegenüber Safari, Chrome, Android
 
Ok danke für die Tipps muss mich mal durchlesen und das dann angehen.
 
Daaron schrieb:
Es gibt eine angeblich hinsichtlich des Renderings quasi makellose Lösung für HTML->CSS, ich habe sie aber leider noch nicht testen können.

Kannst Du für Interessierte Ross und Reiter nennen?
 
PHP-Lösungen gibt es dafür nicht, aber z.B. CutyCapt oder PhantomJS sind viel genutzte Möglichkeiten.
 
Zuletzt bearbeitet:
HTML2PDF hat einen absolut minimalen HTML-Support, das ist auf der Stufe wie bu1137 es angedeutet hat, und weit entfernt von richtigem Rendern.
 
Moin Leute, ich habe mal eine Frage zu tcpdf, hat das jemand von Euch schon aktiv im Einsatz?

Es geht darum, ich habe es mir mal angesehen und auch ein PDF Generieren können, ich überlege ob ich mir ein PHP basiertes Eingabesystem für Rechnungen baue. So kann ich dann meine Ausgabe (das PDF) so anpassen wie ich es will und muss mich nicht durch andere Programme wuseln :D

Was ich nur noch nicht so wirklich gesehen habe, ist es möglich dem tcpdf zu sagen das er irgendwann am Ende einen Umbruch machen soll..? z.B. wenn ich eine Tabelle ausgebe, und die letzte Zeile nicht auf Seite 1 passt, soll diese auf Seite 2 gedruckt werden.

Ich hoffe mal, man versteht was ich meine.
Gruß, Domi
 
Du musst in der Schleife, die deine Tabellenzeilen ausgibt, einfach vor der Ausgabe prüfen, wie weit "unten" du in der Seite bist. Wenn die nächste Zeile nicht mehr drauf passt musst du AddPage() aufrufen und auf der nächsten Seite weiterschreiben. Dabei solltest du dann evtl. den Tabellenkopf noch einmal ausgeben.
 
Moin, ich hatte heute mal ein wenig gesucht und nach "tcpdf seitenende prüfen" gesucht, aber nicht das passende gefunden. Hast Du so etwas schon mal damit gebaut oder realisiert und könntest mir verraten, wie ich prüfen lassen kann ob die nächste Tabellen-Zeile noch auf das aktuelle Blatt passt?!

Gruß, Domi
 
Na du kennst ja die Höhe einer Zeile deiner Tabelle. Bevor du eben die Zeile malst berechnest du ob unten auf der Seite noch genug Platz ist und wenn nicht brichst du die Seite um und beginnst mit dem Malen von oben neu.
 
Also ich weiß das eine Zeile in der Tabelle eine Höhe von 4 hat, ich könnte z.B. auf der ersten Seite knapp 19 Zeilen setzen, wenn 20 kommt, macht er vorher ein AddPage(), dass funktioniert soweit. Problematisch ist nur der Fall wenn es eine zweite und weitere Seiten gibt, da muss er ja dann mehr als bis 19 zählen.. oder denke ich gerade falsch?
 
Du brauchst nicht zählen. Du kannst die Aktuelle Position abfragen, und die Höhe von einer neuen Zeile kannst du auch im vornherein bestimmen (getStringHeight). Dann weisst du auch, ob's noch auf die Seite passt, oder du einen Umbruch machen brauchst.
 
Zurück
Oben