Kurzfassung der Diplomarbeit Abteilung Informatik Name der Diplomandin / Beat Catellani des Diplomanden Patrick Kupferschmid Diplomjahr 2000 Titel der Diplomarbeit PDF-Generator Examinatorin / Examinator Prof. Hans Rudin, Professor für Informatik Kurzfassung der Diplomarbeit Aufgabenstellung In dieser Diplomarbeit soll eine Java basierte Lösung erstellt werden, welche im Umfeld einer Internetarchitektur 'on the fly' PDF-Files generieren kann, die auf der lokalen Festplatte des Servers abgespeichert oder direkt an den Web-Client zurückgesandt werden können. • Eingabedaten aus HTML-Formularen sollen in kontextabhängige Textvorlagen eingefügt, zusammengesetzt und formatiert werden. Es dürfen sowohl Text als auch Grafiken in den PDF’s vorhanden sein. Daten und Layout können z.B. mittels XML-Technologie zusammengeführt werden. Über ein API sollten Properties und Felder eines Templates definiert werden können. • Der PDF-Generator muss auch eine Kommandozeilen-Schnittstelle aufweisen, damit PDF’s z.B. als Batchprozess generiert werden können, wobei als Datenquellen diverse Sourcen wie Datei, DB, Servlets dienen können. Resultat Einer instanzierten Bean kann über eine definierte Schnittstelle ein FO(Formatting Object) oder ein XML- und XSL Dokument, sowie in die Vorlagen einzufügenden Text übergeben werden, woraus ein PDF(Portable Document Format) Dokument erzeugt wird. Der Generierungsprozess wird von FOP übernommen. FOP ist Teil des Apache XML-Projektes (http://xml.apache.org/fop) und stellt eine Java Implementation eines Druckformatierers dar, der durch XSLObjekte angetrieben wird, einen formatierten Objektbaum einliest und daraus ein PDF-Dokument generiert. Der Objektbaum kann als XML(erzeugt von XSLT oder Xalan), als DOM(im Falle von XT) oder als SAX-Events übergeben werden. Aus dem Apache XML-FOP Projekt entstand ein XSL FOàPDFFormatierer(Version 0.14), der kompatibel zur Portable Document Format Specification(Version 1.3) von Adobe Systems ist . Template (XML- bzw.JSP -Datei) Formatierung (XSL-Stylesheet) <?xml version="1.0"?> <doc>Peter Muster</doc> <%= userData.getName() %> Berechtigungen Benutzerdaten Name: Peter Muster Adresse: Blabla Konstanten, Ressourcen A4: 21.0 x 29.7cm C:/images/foo.gif Peter Muster Blabla Servlet PDF Generirungsdprozess DB Datei, Kommandozeile