Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


Formatting Objects

Zusammenfassung:

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:

qrpic/FO1_.jpg

wg / 9. Oktober 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



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: info10@wilfried-grupe.de