Einträge tagged mit “flyingsaucer”

PDF und HTML mit acts_as_flying_saucer

Nutzer lieben Webanwendungen, die PDF-Dateien erzeugen. PDFs sind wie sauber ausgefüllte Papierformulare und Nutzer können sie ausdrucken, abheften, mit in ein Meeting nehmen, ... Kurz: Nutzer können weiter so arbeiten wie vor der Webanwendung, nur irgendwie moderner. Und genau das lieben sie.

Entwickler lieben Einfachheit und wollen Aufwände gern gering halten. Mit CSS muss man sich ja in jedem Falle auseinandersetzen. Wie wäre es, auch PDFs über CSS zu gestalten, nur eben mit Seitenzahlen, Kopf- und Fusszeile, ...

In unserem Artikel JRuby on Rails PDF Generierung haben wir schon vorgestellt, wie man einzelne Partials in PDFs bringen kann. Nun zeigen wir, wie eine normale Rails-Action einfach statt Anwendungs-HTML eine PDF-Datei erzeugt.

JRuby on Rails PDF Generierung

Viele Rails-Entwickler werden früher oder später auch einmal PDF-Dateien aus einer Anwendung heraus erzeugen wollen. Dafür gibt es viele denkbare Ansätze: angefangen von PDF::Writer über Prawn bis hin zu kommerziellen Produkten. (Ein Beispiel für PDF-Generierung mit Prawn findet man Ryan Bates Railscasts). Was uns an den meisten dieser Ansätze stört, ist der Aufwand, der mit dem neuen Layout für die PDF-Datei verbunden ist. Warum kann nicht auch hier eines der Grundprinzipien von Rails gelten - DRY (Don't Repeat Yourself)!
Unser Ziel war, bestimmte Bereiche der Rails-Views als Partials zu erzeugen, um genau diese Partials auch im PDF verwenden zu können -> Don't Repeat Yourself

Dank JRuby ist die Lösung dafür nicht schwer. In JRuby stehen uns ja neben den Ruby- und Rails-Bibliotheken auch die Vielfalt und Breite der Java Welt zur Verfügung. In dem Artikel Generating PDFs for Fun and Profit with Flying Saucer and iText wird an mehreren Beispielen sehr gut erläutert, wie man PDFs mittels Java erzeugt.

Durch die Java-Bibliothek iText und das "Flying Saucer"-Projekt ist man in der Lage, XML und CSS zu rendern und als PDF auszugeben. iText ist eine Java Bibliothek zum "on the fly" Generieren von PDF-Dateien. Sie benötigt mindestens JDK 1.4 und ist frei erhältlich. Das "Flying Saucer"-Projekt stellt einen XML/CSS Renderer zur Verfügung, der einen XML-Input mittels CSS formatiert und daraus eine Darstellung als Bild-, PDF- oder Bildschirmausgabe erstellt.

Das Ganze muss nun also nur noch in eine Rails-Anwendung eingebettet werden. Auf geht's!
1