Home
Über mich
Veröffentlichungen

XML XML-Schema XPath XSL-T XSL-FO XQuery XProc SVG

XSL-FO

XSL-FO

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:

pic/FO1.png

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.

Generierung von PDF

Das FO-Dokument ist ein XML-Dokument mit dem Namespace http://www.w3.org/1999/XSL/Format.

pic/fo_root.png

Das fo:root-Element hat in seiner "Minimalausstattung" mindestens zwei Child-Eemente:

pic/fo_page_sequence.png

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.

pic/FOP_apache.png

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.

pic/FO_oxygen1.png

wg / 29. August 2021



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.




XSL-T

Die Struktur von Formatting Objects (FO)

XSL-Transformation nach FO

Arbeiten mit XSL 3.0 und FOP

FOP mit ANT

XSL-FO

fo:basic-link

fo:basic-link

fo:bidi-override

fo:block

fo:block-container

fo:bookmark

fo:bookmark-title

fo:bookmark-tree

fo:change-bar-begin

fo:change-bar-end

fo:character

fo:color-profile

fo:conditional-page-master-reference

fo:declarations

fo:external-graphic

fo:float

fo:flow

fo:flow-assignment

fo:flow-map

fo:flow-name-specifier

fo:flow-source-list

fo:flow-target-list

fo:folio-prefix

fo:folio-suffix

fo:footnote

fo:footnote-body

fo:index-key-reference

fo:index-page-citation-list

fo:index-page-citation-list-separator

fo:index-page-citation-range-separator

fo:index-page-number-prefix

fo:index-page-number-suffix

fo:index-range-begin

fo:index-range-end

fo:initial-property-set

fo:inline

fo:inline-container

fo:instream-foreign-object

fo:layout-master-set

fo:leader

fo:list-block

fo:list-item

fo:list-item-body

fo:list-item-label

fo:marker

fo:multi-case

fo:multi-properties

fo:multi-property-set

fo:multi-switch

fo:multi-toggle

fo:page-number

fo:page-number-citation

fo:page-number-citation-last

fo:page-sequence

fo:page-sequence-master

fo:page-sequence-wrapper

fo:region-after

fo:region-before

fo:region-body

fo:region-end

fo:region-name-specifier

fo:region-start

fo:repeatable-page-master-alternatives

fo:repeatable-page-master-alternatives

fo:repeatable-page-master-reference

fo:retrieve-marker

fo:retrieve-table-marker

fo:root

fo:scaling-value-citation

fo:simple-page-master

fo:single-page-master-reference

fo:static-content

fo:table

fo:table-and-caption

fo:table-body

fo:table-caption

fo:table-cell

fo:table-column

fo:table-footer

fo:table-header

fo:table-row

fo:title

fo:wrapper

XQuery



Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/FO1_.html