XML | XML-Schema | XPath | XSL-T | XSL-FO | XQuery | XProc | SVG |
XSL-FO
![]() |
![]() |
➪ Um XML mit XSL nach PDF (png, rtf, tiff, png, txt, ps, pcl) transformieren zu können, ist zunächst eine Konvertierung in das Zwischenformat Formatting Objects (FO) erforderlich.
Auf dieser Seite:
Um den Konvertierungsprozess nachvollziehen zu können, müssen Sie zunächst die Struktur von Formatting Objects verstehen und auch die Werkzeuge kennen, die die Transformation von FO nach PDF (oder ein anderes Zielformat) durchführen.
Das FO-Dokument ist ein XML-Dokument mit dem Namespace http://www.w3.org/1999/XSL/Format.
Das fo:root-Element hat in seiner "Minimalausstattung" mindestens zwei Child-Eemente:
Eine sehr einfache FO-Struktur finden Sie hier. Das Dokument beschreibt eine PDF-Seite im DIN-A4-Format (297 * 210 mm) mit diversen Seitenrändern sowie dem Textinhalt "Hallo Leute von heute".
<?xml version="1.0" encoding="ISO-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master
margin-right="15mm"
margin-left="2cm"
margin-bottom="1cm"
margin-top="2cm"
page-width="21cm"
page-height="297mm"
master-name="layout1">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="layout1">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hallo Leute von heute</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Um dieses FO-Dokument in PDF konvertieren zu können, benötigen Sie noch eine spezielle Software, die Sie herunterladen können, beispielsweise in der Version 2.2.
https://xmlgraphics.apache.org/fop/download.html
Die heruntergeladene Zip-Datei können Sie an beliebiger Stelle in Ihrem Verzeichnis entpacken (zum Beispiel: "C:\wg\fop-2.2"). Gehen Sie in dieses Verzeichnis, so werden Sie mehrere Dateien und Unterverzeichnisse finden.
Speichern Sie der Einfachheit halber das oben definierte FO-Dokument in dasselbe Verzeichnis, beispielsweise unter dem Namen "FOtest.fo" (bitte aufpassen: nicht speichern mit der möglicherweise automatisierten Endung ".txt", damit der Dateiname nicht fälschlicherweise "FOtest.fo.txt" lautet).
Nun gehen Sie mit der Eingabeaufforderung in dasselbe Verzeichnis (bei mir mit "cd C:\wg\fop-2.2") und starten die Transformation mit dem Kommando
C:\wg\fop-2.2>fop -fo FOtest.fo -pdf FOtest.pdf
Wenn alles richtig läuft, reagiert das System fix mit einer Erfolgsmeldung dieser Art:
Feb 04, 2018 2:56:12 PM
org.apache.fop.events.LoggingEventListener processEvent
INFORMATION: Rendered page #1.
In demselben Verzeichnis finden Sie dann eine neue Datei "FOtest.pdf", die Sie gern per Doppelclick öffnen können. Sie haben ein PDF-Dokument mit den inhaltsschweren Worten "Hallo Leute von heute".
Versuchen Sie analog auch die Kommandos für png, txt, ps, pcl; auch hier sollten Sie jeweils eine neue Datei erhalten, die sich mit geeigneten Programmen auch lesen lässt.
C:\wg\fop-2.2>fop -fo FOtest.fo -png FOtest.png
C:\wg\fop-2.2>fop -fo FOtest.fo -txt FOtest.txt
C:\wg\fop-2.2>fop -fo FOtest.fo -ps FOtest.ps
C:\wg\fop-2.2>fop -fo FOtest.fo -pcl FOtest.pcl
Eine lesenswerte Übersicht erhalten Sie mit dem Kommandoaufruf
C:\wg\fop-2.2>fop -?
Apache FOP ist nicht das einzige Tool, das eine FO-Transformation unterstützt; Antenna House, RenderX XEP, Altsoft XML2PDF oder Compart DocBridge MFF-XSL-FO Filter stehen ebenfalls zur Verfügung. Die Unterstützung für den FO-Standard ist keineswegs einheitlich.
Leistungsfähige XML-Powertools bieten dieselbe bzw. eine erweiterte Unterstützung bei der Konvertierung. Laden Sie die Datei FOtest.fo beispielsweise in den Oxygen XML Editor 19, so wird Ihnen umgehend ein Transformations-Szenario angeboten, das die FO-PDF-Transformation durchführt.
wg / 29. August 2021
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
ᐊ XSL-T
ᐁ Die Struktur von Formatting Objects (FO)
ᐁ Arbeiten mit XSL 3.0 und FOP
ᐁ XSL-FO
ᐁ fo:block
ᐁ fo:conditional-page-master-reference
ᐁ fo:float
ᐁ fo:flow
ᐁ fo:index-page-citation-list-separator
ᐁ fo:index-page-citation-range-separator
ᐁ fo:page-number-citation-last
ᐁ fo:repeatable-page-master-alternatives
ᐁ fo:repeatable-page-master-alternatives
ᐁ fo:repeatable-page-master-reference
ᐁ fo:root
ᐁ fo:single-page-master-reference
ᐁ fo:table
ᐁ fo:title
ᐅ XQuery
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de