Prawn::Markup released

Pascal Zumkehr

Wir freuen uns, den Release unserer neuesten Open Source Bibliothek Prawn::Markup anzukünden. Dabei handelt es sich um ein Ruby Gem, welches einfache HTML Strukturen in Prawn generierte PDF Dokumente einfügt.

Im Rahmen der Neuentwicklung von socialWEB, einer umfassenden Software für die soziale und sozialpädagogische Arbeit, mussten wir dynamische, formatierbare PDF Dokumente erstellen. Neben einfachem Text enthalten diese auch Inhalte, welche über einen WYSIWYG Editor im Browser eingegeben werden und direkt als HTML persistiert sind.

Nach fachlicher Abklärungen und einem Prototypen haben wir uns entschlossen, auf den etablierten Ruby PDF Generator Prawn zu setzen. Die Alternative, wkhtmltopdf, erfüllte nicht alle unsere Anforderungen und hätte zusätzliche Abhängigkeiten und eine zu grosse Komplexität in unser Setup gebracht. Jetzt mussten wir nur noch das HTML in das PDF integrieren.

Also haben wir unser SAX Parser Know How aufgefrischt und schon nach wenigen Stunden konnten wir erste HTML Elemente erfolgreich in ein PDF einfügen. Da die HTML Abschnitte nahtlos in das Look and Feel unserer PDF Dokumente hineinpassen müssen, hat unsere Arbeit erleichtert: Wir konnten (und wollten) vollständig auf die Verarbeitung von CSS verzichten. Das HTML dient einzig seinem ursprünglichen Zweck, nämlich der Strukturierung des Textes. Die effektive Darstellung wird dem Medium überlassen. So wird der gleiche Inhalt im Web Frontend über die spezifischen Stylesheets gelayoutet, während im PDF die dortigen Formatierungen angewandt werden.

Im Vergleich zur gesamten Applikation ist dieses selbst geschriebene Feature nur eine ganz kleine Komponente. Diese ist sehr hilfreich, jedoch nicht businesskritisch. Unzählige andere Komponente konnten wir in der Entwicklung direkt verwenden, da sie mit einer Open Source Lizenz veröffentlicht wurden. Um einen Beitrag an die lebendige Ruby Community zu leisten und um ein Dankeschön für all die frei verfügbaren Bibliotheken zu geben, entschlossen wir uns, den entsprechenden Code unter einer Open Source Lizenz zu veröffentlichen.

Ruby macht uns das sehr einfach. Mit einem einfachen   bundle gem prawn-markup generierten wir die erforderliche Struktur für eine Ruby Bibliothek. Danach mussten wir nur noch den Code und die Tests extrahieren, einige Abhängigkeiten entfernen und ein ausführliches README schreiben. Das Ganze luden wir auf Github hoch und es blieb uns noch ein  rake release, um das Gem auf Rubygems allgemein verfügbar zu machen.

Wir sind überzeugt, dass auch andere Ruby Teams Bedarf haben, HTML Strukturen in PDFs einzubetten. Wir hoffen natürlich, dass diese das eine oder andere unerkannte Issue finden oder gar einen Pull Request schreiben werden. Daher sind wir begeistert, mit der freundlichen Erlaubnis der socialWEB Software GmbH und im Rahmen eines Puzzle Open Source Projekts diese Funktionalität als eigenständige Bibliothek veröffentlichen zu dürfen und der Open Source Community etwas zurückgeben zu können.

Schreibe einen Kommentar