Dokumentenformate / Formatting Objects

Formatting Objects

Formatting Objects

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 "FO" erforderlich.

Formatting Objects

pic/FO1.png

Dieses 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:


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

Der folgende Kommandoaufruf startet den FO-Prozessor, der aus dem FO-Dokument eine PDF-Datei generiert. Alternativ stehen die Outputformate png, rtf, tiff, png, txt, ps, pcl etc. zur Verfügung.


cd C:\wg\fop-2.2
fop -fo "C:/wg/FO2.fo" -pdf "C:/wg/FO2.pdf"

Apache FOP ist nicht das einzige Tool, das eine FO-Transformation unterstützt; auch 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. Ich bleibe hier bei Apache FOP.

Da es neben den Seitenrändern zusätzliche Einzüge (fo:region-before, fo:region-after, fo:region-start, fo:region-end) geben kann, sind solide Grundlagen der Seitenaufteilung sehr wichtig. Im folgenden FO-Dokument finden wir ein Beispiel, dessen Ausführung so aussieht:

pic/FO2.png

Wichtig für das Verständnis der Seitenaufteilung ist die Konfiguration von fo:region-body. Tip: versuchen Sie mal die fo:region-body ohne die margin-Attribute zu konfigurieren.


<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 margin-right="5cm" 
       margin-bottom="15mm" 
       margin-top="35mm" 
       margin-left="45mm" 
       background-color="lightgrey" />
   <fo:region-before extent="30mm" 
       background-color="#FFFF33" />
   <fo:region-after extent="7mm" 
       background-color="#B0E0E6" />
   <fo:region-start extent="30mm" 
       background-color="#CC99FF" />
   <fo:region-end extent="45mm" 
       background-color="#CEFF00" />
  </fo:simple-page-master>
 </fo:layout-master-set>
 <fo:page-sequence master-reference="layout1">
  <fo:static-content flow-name="xsl-region-before">
   <fo:block text-align="center">xsl-region-before</fo:block>
  </fo:static-content>
  <fo:static-content flow-name="xsl-region-end">
   <fo:block text-align="center">xsl-region-end</fo:block>
  </fo:static-content>
  <fo:static-content flow-name="xsl-region-start">
   <fo:block text-align="center">xsl-region-start</fo:block>
  </fo:static-content>
  <fo:static-content flow-name="xsl-region-after">
   <fo:block text-align="center">xsl-region-after</fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
   <fo:block text-align="center">xsl-region-body</fo:block>
  </fo:flow>
 </fo:page-sequence>
</fo:root>

Insgesamt gibt es folgende FO-Elemente, die jeweils diverse Attribute und Childnodes haben können:

wg / 2. Januar 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

Mobil: 0151. 750 360 61 * eMail: info2018@wilfried-grupe.de

www.wilfried-grupe.de/FO1_.html