Automatisierte Dokumentenproduktion mit Apache FOP Jeremias Märki <[email protected]> OpenExpo 2008, Bern, 13. März 2008 Über mich Selbstständiger Software-Entwickler & Berater aus Luzern Hauptfokus auf Dokumentenproduktion und -handling Starker Fokus auf Open Source Software und offene Standards Mitglied der Apache Software Foundation (seit 2004) Mitarbeit an Apache FOP (seit 2000) Website: http://www.jeremias-maerki.ch/ Inhalt Was ist FOP? Was ist XSL-FO? Vor-/Nachteile, Tools Integrationsmöglichkeiten Anwendungsbeispiele Ausblick Was ist FOP? FOP = Formatting Objects Processor Bekannteste Open Source Implementation von XSL-FO (W3C Standard) Ein Produkt des Apache XML Graphics Projekts Publiziert unter der Apache Lizenz 2.0 Entwickelt in Java, also lauffähig auf allen wichtigen Plattformen Gestartet im 1999 durch James Tauber Was ist XSL-FO? XSL = eXtensible Stylesheet Language W3C Standard bestehend aus zwei Teilen: XSLT = XSL Transformations FO = Formatting Objects XML Dialekt Flow-orientierte Dokumentenlayout-Sprache 15. Oktober 2001: XSL 1.0 Recommendation 5. Dezember 2006: XSL 1.1 Recommendation Typischer Workflow Data Source XML XSL-FO Generation Transformation (XSLT) XSLT Stylesheet Layout Target File Paper Printing Hello World in XSL-FO <?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="A4" page-height="29.7cm" page-width="21cm" margin="2cm"> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello World!</fo:block> </fo:flow> </fo:page-sequence> </fo:root> Vor- und Nachteile von XSL-FO gegenüber proprietären Lösungen Vorteile Standard-basiert Versch. Tools verfügbar (kommerziell und Open Source) Austauschbarkeit der Tools mit weitgehendem Investitionsschutz Einfacher Know-How Einkauf Deckt eine grosse Bandbreite ab (Mengen, Dokumententypen) Nachteile Relativ CPU-intensiv Interoperabilitätsprobleme ähnlich wie bei HTML Eignung von XSL-FO und FOP Einsatz Rechnungen, Policen, Briefe, Formulare etc. Listen, Auswertungen automatisiert erstellte, periodische Plakate, Flyer Dokumentationen, Manuals, Wissenschaftliche Texte, Semesterarbeiten etc. non-Latin Scripts (Arabisch, Japanisch etc.) komplexe Layouts (Zeitung, Werbung) XSL-FO generell ++ Apache FOP ++ 0 ++ 0 ++ ++ + ++ - - - Stylesheet-Erstellung "XSLT von Hand" ☺ XSL Editoren XSLFast (kommerziell, enthält Apache FOP) Metafocus DIGIFORMS Designer (kommerziell, enthält Apache FOP) Altova StyleVision 2008 (kommerziell, enthält Apache FOP) Assentis DocDesign (kommerziell) u.v.m. Was bietet Apache FOP? Java-Implementation Java API Kommandozeilen-Client Ant-Task Implementiert ein Subset von XSL 1.1 http://xmlgraphics.apache.org/fop/compliance.html Erweiterbar über Plug-ins (Ausgabeformate, externe Resourcen, u.v.m) Detailierte Benutzerdokumentation Support via Mailing Liste: [email protected] Ausgabeformate PDF (inkl. PDF/A-1b und PDF/X-3:2003) PostScript Bitmap (TIFF, PNG) Java2D/AWT, Print PCL AFP (MO:DCA) RTF (eingeschränkt) Text & XML Externe Resourcen Bitmap Bilder (JPEG, PNG, TIFF etc.) SVG (mittels Apache Batik, OSS, ALv2) Barcodes (mittels Barcode4J, OSS, ALv2) MathML (mittels JEuclid, OSS, ALv2) EPS (nur für PostScript-Ausgabe) EMF (nur für RTF-Ausgabe) XMP Metadaten Integrationsmöglichkeiten Batch- oder Ant-Scripts (off-line, langsam) Servlet Web Service HotFolder (FTP Upload) Direkte Einbindung bei Java Applikationen Asynchron über Message Queues Kompilierung als .NET DLL (mit IKVM, mit Einschränkungen) Szenario 1: PDF on-demand in den Browser PDF Web Applikation FOP Servlet XML Datenbank Szenario 1a: Apache Cocoon als PDF Servlet Apache Cocoon ist ein mächtiges Web Framework mit starken XML-Fähigkeiten Enthält einen "FOP-Block" zur PDF-Erstellung. Integration von Daten aus verschiedenen Quellen (inkl. Datenbanken) Open Source, Apache License V2.0 http://cocoon.apache.org/ Szenario 2: DocBook, DITA etc. Offline Generierung von Büchern, Semesterarbeiten, Manuals Ausgangsformate: DocBook DITA Eigener XML Dialekt Automatisierung beispielsweise über Apache Ant Scripts Szenario 3: Geschäftsdokumente Rechnungen, Lieferscheine, Versicherungspolicen, Briefe, Kontoauszüge, Formulare etc. Volumen: von einzelnen Dokumenten pro Tag (on-demand)... ...bis 20 Mio Dokumente pro Jahr (Batch) Server-Betrieb Anbindung: Web Service Hot Folder (FTP Upload) Medien-/Verpackungssteuerung (OMR, DataMatrix) Multi-Channel Fähigkeiten (Postweg, Mail, Fax etc.) Beispiel: Patentdokumente bei Patentämtern Patentdokumente liegen als XML-Dokumente plus Bilder vor Weitgehend automatische Aufbereitung mit FOP Produktion von PDF/A für Langzeitarchivierung Grosses Augenmerk auf Metadaten So im Einsatz bzw. geplant bei: Eidg. Institut für Geistiges Eigentum, Bern Europäisches Patentamt, Wien Hä? FOP 0.94? Nach fast 10 Jahren? Keine Berührungsängste wegen der Versionsnummer! FOP wird seit Jahren erfolgreich produktiv eingesetzt! Voraussetzungen für FOP 1.0: "Auto-Table-Layout" (autom. Spaltenbreiten) Verbesserungen bei "Keeps" Bessere Unterstützung für wechselnde Seitenbreiten Ausblick Relativ kleines Projektteam Hype-Faktor ist weg. Lernkurve für die Entwicklung ist recht steil. Regelmässige Releases (ca. alle 6-8 Monate) FOP 1.0 hoffentlich noch dieses Jahr, aber ohne Garantie. Hilfe ist willkommen! Weitere Infos Apache FOP Website http://xmlgraphics.apache.org/fop/ XSL 1.1 Spezifikation http://www.w3.org/TR/xsl11 Weitere Links, Produkte, Artikel, Buchtips http://www.xslfo.info/ Vielen Dank! Haben Sie Fragen?