Automatisierte Dokumentenproduktion mit Apache FOP

Werbung
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?
Herunterladen