Formatting Objects (FO)

Formatting Objects (FO)

Formatting Objects (FO)

➪ Um XML mit Hilfe von 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.

pic/FO1.png

Um den Konvertierungsprozeß nachvollziehen zu können, müssen wir 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". Das fo:root-Element hat in seiner "Minimalausstattung" mindestens zwei Childelemente:

Eine sehr einfache FO-Struktur finden wir hier. Das Dokument beschreibt eine PDF-Seite im DIN-A-4-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 wir noch eine spezielle Software, die wir hier 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 (bei mir: "C:\wg\fop-2.2"). Gehen Sie in dieses Verzeichnis, so werden Sie mehrere Dateien und Unterverzeichnisse finden.

pic/FOP_apache.png

Speichern wir 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", so daß der Dateiname nicht fälschlicherweise lautet "FOtest.fo.txt").

Nun gehen wir 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 (bei mir: C:\wg\fop-2.2) finden wir dann eine neue Datei "FOtest.pdf", die wir gern per Doppelclick öffnen können. Wir haben ein PDF-Dokument mit den inhaltsschweren Worten "Hallo Leute von heute".

Versuchen wir analog auch die Kommandos für png, txt, ps, pcl; auch hier sollten wir jeweils eine neue Datei erhalten, die sich mit geeigneten Programmen auch lesen läßt.


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 wir 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 wir die Datei FOtest.fo beispielsweise in den Oxygen XML Editor 19, so wird uns umgehend ein Transformations-Szenario angeboten, das die FO-PDF-Transformation durchführt.

pic/FO_oxygen1.png

wg / 3. März 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse







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