PDA

Vollständige Version anzeigen : generische PDF Erstellung aus einer View


DennisBecker
22.11.2007, 11:01
Hallo zusammen,

in dem Thread Brainstorming PDF-Generierung (http://www.zfforum.de/showthread.php?t=1062) kam ich ja schon kurz auf die Idee zu sprechen, mit einfachen Mitteln eine View statt als HTML zu rendern in einer PDF Datei auszugeben.

Warum das Ganze?
1. Ich will nicht laufend die PDF Generierung neu machen.
2. Kann man dies direkt in diversen Anwendungsfällen benutzen, z.B. für News, Foren, Blogs, Tutorials, Tests usw.
3. Ich will vor allem nicht großartig neuen Quellcode produzieren

Folgende Ziele sollten erreicht werden
1. Eine Klasse soll die Möglichkeit bieten, HTML für PDF's zu formatieren.
2. Layouts müssen unterdrückt werden.
3. Templates für PDF Dateien sollten erstellbar sein.
4. Die Generierung des PDF's soll durch anhängen eines GET-Parameters wie /as/pdf angestoßen werden.

Derzeitige Probleme
1. Keine einheitliche Behandlung von Views -> Incubator, Xend_Layout und andere Proposals


Ich würde hier vielleicht erst einmal ein paar Ideen sammeln wollen, bzgl. Ziele und Umsetzung. Vor allem müssen die Punkte unter den Problemen beseitigt werden, um dies überhaupt realisieren zu können (sind also Release Blocker). Vor allem sollte diese PDF-Generierung mit dem Standard ZF funktionieren!

Ich bin auf Eure Meinungen gespannt :)

KingCrunch
22.11.2007, 12:21
1. Keine einheitliche Behandlung von Views -> Incubator, Xend_Layout und andere ProposalsDas ist falsch: Proposals und Incubator gelten nicht als "Stand der Dinge", Trunk eventuell mit Wohlwollen, aber selbst da ist die View-Komponente homogen. Was ich damit sagen will ist, dass es mit Komponenten aus dem Incubator oder sogar aus Proposals sowieso etwas knifflig wird, weil die sicher nicht jeder heruntergeladen hat, benutzen will, oder (bei Proposals) implementieren will ;)

DennisBecker
22.11.2007, 12:44
Ich verweise darauf erst einmal als Problem, weil sich die View-Komponente sicherlich in naher Zukunft ändern wird. Wie dies aussieht, weiß ich derzeit nicht. Aus meiner Sicht besteht die Problematik, dass der Content-Bereich aktuell nicht abgefangen werden kann und somit auch eine generische Lösung schwierig wird. Man will ja nicht die normale HTML Seite als PDF machen sondern nur den wesentlichen Inhalt selbst. Falls ich mcih da Irre und es eine Lösung dafür gibt, dann bitte korrigieren :)

KingCrunch
22.11.2007, 13:11
Erweiter doch einfach die View, so dass sie eben nicht normal als Text rendert, sondern als pdf.

DennisBecker
22.11.2007, 13:28
Prinzipiell hört sich das gut an, jedoch würde ich so haben wollen: Ins Projekt kopieren, Link hinzufügen, PDF kommt raus von der Seite. So soll zumindest die Handhabung sein...

SRIT
22.11.2007, 13:29
Die Schwierigkeit sehe ich gar nicht mal dadrin, dass dem Controller oder von mir aus auch View weiß zu machen, dass er anstatt die Seite rendern, nem Pdf erstellen soll. NUr der Haken ist wie bei allen Binär Geschichten (Bilder, Pdf usw.), wie komme ich an die Koordinaten... Wenn ich den Umbruch nicht früh genug mache, "schreibt" Zend_Pdf über den Seiten rand hinaus usw...

Gibt da ne freibier Lösung, die auch recht bekannt ist (nur mir fällt der name da gerade mal net ein :D ), die kann das auch nen bisschen, wobei man ihm da auch beibringen muss im Vorfeld, was er aus <b>text</b> machen soll.

Also ich denke das ganze in unsere Controller zu integrieren, halte ich für weniger schwierig als die PDFs on the fly zu generieren.

KingCrunch
22.11.2007, 13:36
Die Schwierigkeit sehe ich gar nicht mal dadrin, dass dem Controller oder von mir aus auch View weiß zu machen, dass er anstatt die Seite rendern, nem Pdf erstellen soll. NUr der Haken ist wie bei allen Binär Geschichten (Bilder, Pdf usw.), wie komme ich an die Koordinaten... Wenn ich den Umbruch nicht früh genug mache, "schreibt" Zend_Pdf über den Seiten rand hinaus usw...Versteh mich nicht falsch, aber die Frage war unnütz (http://de.wikipedia.org/wiki/DIN-A4#.C3.9Cbersicht)

Also ich denke das ganze in unsere Controller zu integrieren, halte ich für weniger schwierig als die PDFs on the fly zu generieren.Wassn daran eigentlich so schwierig, dass ihr euch da son Kopp drum macht? Macht ne (La)TeX-Datei draus und lasst die kompilieren ;) Da muss man net mal die View erweitern und kann Layout und Templates verwenden, so wie immer.

SRIT
22.11.2007, 13:42
Versteh mich nicht falsch, aber die Frage war unnütz (http://de.wikipedia.org/wiki/DIN-A4#.C3.9Cbersicht)

Wassn daran eigentlich so schwierig, dass ihr euch da son Kopp drum macht? Macht ne (La)TeX-Datei draus und lasst die kompilieren ;) Da muss man net mal die View erweitern und kann Layout und Templates verwenden, so wie immer.

Ich hab ja auch net gefragt, wie die Koordinaten, der Seiten sind... Es geht lediglich darum, dass man sowas ohne weiteres nicht verallgemeinern kann...

DennisBecker
22.11.2007, 14:26
Also für mich ist das derezeit nicht so einfach - und da die Frage nach PDF's immer wiederkehrt würd ich halt eine schicke, einfache Lösung entwickeln wollen.

Marco
23.11.2007, 20:08
Hi,
ich bin grad dabei nen generischen PDF-Renderer zu basteln. Ich benutze
als PDF-Engine nen Mod von fpdf -> tcpdf.

Um die Daten meiner Models automatisch in die PDF-View zu bringen nutze
ich meinen generischen Konverter (click (http://www.zfforum.de/showthread.php?t=773))

Mein PDF-Renderer habe ich so geschrieben, dass er die aufbereiten Daten
annimmt, und dann als PDF rendert. Dazu gibts für jeden PDF-type ne config-
Datei, die die Parser-Struktur speichert.

...Dadurch kann man ruck-zuck zu generierende Seiten erstellen.

Statt fpdf* kann man auch Zend_Pdf nehmen, dann müsste man sich aber
Helper selber schreiben, und dafür hab ich leider keine Zeit :)

gruß marco

ps: bevor performance u. overhead einwände kommen ;)
fpdf kann cachen und mein datenkonverter bald auch