Aus Webanwendung PDF, RTF, ... generien

30/10/2009 - 14:10 von Tobias Nissen | Report spam
Moin!

Ich muss in einer Webanwendung aus einem XHTML-Dokument ein PDF
generieren. Spàter kommt vielleicht nochmal Unterstützung für RTF oder
CSV dazu. (Der erste Satz stimmt nicht ganz, denn wenn es Vorteile
bietet, würde ich auch etwas anderes generieren, wenn es sich dann
leichter in PDF, RTF, whatever umwandeln làsst.)

Nun habe ich mich etwas schlau gemacht und bin bei diesen Möglichkeiten
gelandet:

* mit XSLT XSL-FO erzeugen und daraus dann PDF
* mit einem der PDF-Module ein PDF direkt im Programm erzeugen
(und das gleiche dann für RTF, ...)

Beide Alternativen gefallen mir (auf den ersten Blick) nicht. Wenn ich
etwa Apache FOP nehme, dann kann ich daraus anscheinend recht gut PDF
generieren. Bei RTF sieht die Sache aber vollkommen anders aus. Meine
Dokumente bestehen aus riesigen Tabellen, bei denen Feintuning angesagt
ist, damit es auf der Seite gut aussieht. Meine Befürchtung ist (nach
Lektüre von [0]), dass ich zur Generierung von RTF FOP nicht verwenden
kann. Das wàre extrem àrgerlich, da das Erstellen eines passenden
XSL-Stylesheets àußerst aufwàndig ist.

Wenn ich die PDF-Dokumente direkt erzeuge, dann ist es einfach
unelegant. Bisher ist es nur eine Ansicht, die nach PDF exportiert
werden soll. Wenn nun andere folgen, muss ich jedesmal einen neuen
Haufen Code anlegen. Dazu kommt, dass man Tabellen gar nicht so direkt
erzeugen kann, wenn ich das richtig sehe. Ich muss die mir also mit
Kàstchen und milimetergenauen Abstànden selbst bauen... So genau habe
ich mich aber damit noch nicht beschàftigt, vielleicht ist es ja doch
gar nicht so schlimm.

Nun habe ich ja bereits ein CSS-Stylesheet, welches die Seiten zum
Drucken schön aufbereitet. Recht wàre mir natürlich etwas, was genau
diese Ausgabe in PDF hinbekommt. Gibt es da was? Und in Anbetracht
dessen, dass vielleicht noch andere Ausgabeformate dazukommen, ist der
Ansatz überhaupt empfehlenswert?

Sollte ich vielleicht auf ein Zwischenformat wie DocBook umsteigen?
Damit kann ich zumindest alle Formate erzeugen und das scheint ja auch
gut zu funktionieren. Kann da jemand etwas zu sagen? Und wie sieht es
dann mit der Perl-Integration aus? Es wàre mir schon lieb, wenn alles
aus einem Guss wàre und ich nicht nur von Perl als Glue-Language
gebrauch mache.

Fragen über Fragen...

Schöne Grüße!
Tobias

[0] http://xmlgraphics.apache.org/fop/0...t.html#rtf
 

Lesen sie die antworten

#1 Christian Kirsch
02/11/2009 - 09:56 | Warnen spam
Tobias Nissen schrieb:
Moin!

Ich muss in einer Webanwendung aus einem XHTML-Dokument ein PDF
generieren. Spàter kommt vielleicht nochmal Unterstützung für RTF oder
CSV dazu. (Der erste Satz stimmt nicht ganz, denn wenn es Vorteile
bietet, würde ich auch etwas anderes generieren, wenn es sich dann
leichter in PDF, RTF, whatever umwandeln làsst.)

Nun habe ich mich etwas schlau gemacht und bin bei diesen Möglichkeiten
gelandet:

* mit XSLT XSL-FO erzeugen und daraus dann PDF
* mit einem der PDF-Module ein PDF direkt im Programm erzeugen
(und das gleiche dann für RTF, ...)




Warum brauchst Du denn mehrere Formate? PDF ist doch für das Anzeigen
wunderbar? RTF ... wenn der Empfànger die Daten nochmal bearbeiten soll,
CSV dito (abgesehen davon, dass CSV für mehr als Tabellen überhaupt
nicht geeignet ist, anders als PDF und RTF).

Wenn ich die PDF-Dokumente direkt erzeuge, dann ist es einfach
unelegant. Bisher ist es nur eine Ansicht, die nach PDF exportiert
werden soll. Wenn nun andere folgen, muss ich jedesmal einen neuen
Haufen Code anlegen. Dazu kommt, dass man Tabellen gar nicht so direkt
erzeugen kann, wenn ich das richtig sehe. Ich muss die mir also mit
Kàstchen und milimetergenauen Abstànden selbst bauen... So genau habe
ich mich aber damit noch nicht beschàftigt, vielleicht ist es ja doch
gar nicht so schlimm.




PDF ist als PS-Abkömmling eine stackorientierte
Seitenbeschreibungssprache. Und ja - es ist so schlimm. Du kannst Dir
natürlich in Perl ein Modul bauen, mit dem Du Tabellen leichter
erstellen kannst. Du kannst vermutlich auch PDF-Funktionen im Header
jedes Dokuments erzeugen, die dasselbe tun. YMMV.
Aber es führt kein Weg drum herum, "millimetergenaue Abstànde" etc. zu
ermitteln.

Wie sollte das auch sonst gehen? PDF ist für die Druckausgabe entwickelt
worden, und da kommt es halt auf sowas an. Anders als bei HTML... Du
wirst Dich damit beschàftigen müssen, ob die Tabelle aufs Papier passt,
das ist ein wenig anders als im Browser, wo man ja scrollen kann ...

Nun habe ich ja bereits ein CSS-Stylesheet, welches die Seiten zum
Drucken schön aufbereitet. Recht wàre mir natürlich etwas, was genau
diese Ausgabe in PDF hinbekommt.



Ja, dann nimm doch dieses Stylesheet auch für den Medientyp "print" und
überlass es dem Betrachter Deiner Webseite, das Dokument zu drucken.
Warum muss das unbedingt PDF sein? Abgesehen davon können manche
Plattformen auch aus einer Webseite PDF erzeugen, notabene Mac OS X.

Gibt es da was? Und in Anbetracht
dessen, dass vielleicht noch andere Ausgabeformate dazukommen, ist der
Ansatz überhaupt empfehlenswert?

Sollte ich vielleicht auf ein Zwischenformat wie DocBook umsteigen?



Weil DokBook-XML irgendwie ... anderes XML ist als XHTML?

Damit kann ich zumindest alle Formate erzeugen und das scheint ja auch



"Mit" DocBook als solchem erzeugst Du doch erstmal gar keine Formate.
Auch da brauchst Du irgendwelche XSL-Programme, die PDF, RTF, whatnot
draus machen. Was also soll das bringen?

Mein letzter Blick auf DocBook (vor einigen Jahren!) war jedenfalls
ernüchternd. Abgesehen davon ist das im Zusammenhang mit der Ausgabe von
simplen Tabellen wohl eher eine Atombombe, die Du auf einen Spatzen wirfst.

Ähnliche fragen