RTF to PDF-Tool

Vor längerer Zeit stellten wir auf diesen Seiten das PDF Framework vor, mit dem sich aus einer statischen Vorlage ein PDF erzeugen lässt. Was sich mit diesem Framework aber nicht realisieren lässt, ist das Umwandeln eines Richtextfeldes in ein PDF.

Oft werden in Notes aber viele Daten in Richtextfeldern abgelegt, um sie Anderen zur Verfügung zu stellen. Man kann diese Daten zwar über das Internet präsentieren (HTML), aber dabei verlieren sie einen Großteil ihrer Formatierungen. Aus diesem Grund haben wir ein neues PDF Tool entwickelt.

Wie funktionierts?

Seit Notes 6 stehen Java und LotusScript Funktionen zur Verfügung, um Notes-Elemente in XML-Strukturen umzuwandeln. Machen wir uns dieses XML doch zunutze, um daraus PDF-Dokumente zu generieren.

Zur Erstellung von PDF's aus XML steht uns das FOP (Formatting Objects Processor) Framework zur Verfügung. Dieses Framework, welches unter der GPL steht, ermöglicht es uns eine als XSL-FO (eXtensible Stylesheet Language – Formatting Objects) vorliegende XML Struktur in ein PDF Dokument zu überführen.

Wie sieht ein solches XSL-FO Dokument aus?

XSL-FO dient zur Formatierung von Daten, wobei es sich nicht wie CSS hauptsächlich auf die Darstellung im Web konzentriert. Es formatiert die Daten vielmehr für die Darstellung in Büchern oder anderen Medien mit festem Layout. Hier ein kleines Beispiel für ein XSL-FO Dokument, das den Text "Hallo Welt" auf eine A4 Seite ausgeben soll:

<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>
<fo:simple-page-master master-name="simple"
page-height="29.7cm"
page-width="21cm"
margin-top="1cm"
margin-bottom="2cm"
margin-left="2.5cm"
margin-right="2.5cm">
<fo:region-body margin-top="3cm" margin-bottom="1.5cm"/>
<fo:region-before extent="3cm"/>
<fo:region-after extent="1.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="simple">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="22pt"
font-family="sans-serif">
Hallo Welt
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>

Und hier das Ergebnis "Hallo Welt.pdf"

Dieses XSL-FO kann dann durch das FOP Framework in ein PDF umgewandelt werden.

Mehr Informationen zu FOP und XSL-FO unter http://xml.apache.org/fop/

Vom Notes Dokument zum XSL-FO

Um das vom Domino generierte DXL in ein XSL-FO umzuwandeln bedienen wir uns eines XSLT Dokuments. Ein XSLT hat die Aufgabe eine XML Struktur in eine andere zu überführen. Das XSLT muss dabei mit Hilfe von Regeln (Templates) die einzelnen DXL Elemente in ein XSL-FO übersetzen.

Das XSLT und das von Notes generierte XML wird dem FOP übergeben. Dieses erzeugt dann daraus ein PDF Dokument.

Der Java Agent müsste dann in etwa so wie unser Beispiel aussehen: Download "Agent.java"

Um die Möglichkeiten zu demonstrieren haben wir eine Beispieldatenbank entwickelt, die zeigt wie ein Richtextfeld in ein PDF umgewandelt wird.

Die Datenbank mit verborgenem Design gibt es hier zum Downloaden und ausprobieren. Die erstelten PDF Dokumente werden als "test.pdf" auf "c:" abgelegt.

Download RTF2PDF.zip


Fragen, Kritik, Anmerkungen? Dann nutzen Sie doch unser Kontaktformular!

Viel Spass!