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


FOP mit ANT

Die Transformation von FO-Dateien in PDF, PS und anderen Ausgabeformaten ist keine Standard-ANT-Task; hierfür muß ein eigener ANT-Task angelegt werden, der jedoch in https://xmlgraphics.apache.org/fop/2.2/anttask.html gut beschrieben ist.

Hierzu müssen die erforderlichen jar-Dateien eingebunden und eine taskdef für fop erstellt werden. Nicht zwingend erforderlich, aber ungemein hilfreich ist die Deklaration von Properties (z.B. "fop_path"), die später an geeigneten Stellen wieder aufgerufen werden können

 <property name="fop_path" value="C:/wg/fop-2.2"/>
 <path id="run-classpath">
  <fileset dir="${fop_path}/lib">
   <include name="*.jar" />
  </fileset>
  <pathelement location="${fop_path}/build/fop.jar" />
 </path>
 <taskdef name="fop" 
          classname="org.apache.fop.tools.anttasks.Fop" 
          classpathref="run-classpath" />

Es gibt verschiedene Möglichkeiten, die Transformation aufzurufen:

"runAllFOP" transformiert alle FO-Dateien (z.B. "ABC.fo") in einem Verzeichnis in PDF-Dateien mit entsprechenden Namen ("ABC.pdf") in dasselbe Verzeichnis. Durch force="true" werden dabei eventuell schon vorhandene PDF-Dateien überschrieben.

 <target name="runAllFOP">
  <fop format="application/pdf"  
       outdir="${verzeichnis}" 
       messagelevel="warn" 
       relativebase="true" 
       throwexceptions="false" 
       force="true">
   <fileset dir="${verzeichnis}">
    <include name="**/*.fo"/>
   </fileset>
  </fop>
 </target>

Aufgerufen wird "runAllFOP" dann in einem anderen target, z.B. mit:

 <antcall target="runAllFOP">
  <param name="verzeichnis" 
         value="${fop_path}/examples/fo/graphics" />
 </antcall>

"runSingleFOP" transformiert eine einzelne FO-Datei in eine einzelne PDF-Datei. Hierbei habe ich unterschiedliche Dateinamen (für "fofile" und "outfile") vorgesehen, so daß eine flexiblere Definition möglich ist. Durch force="true" wird auch hier eine eventuell schon vorhandene PDF-Datei überschrieben.

 <target name="runSingleFOP">  
  <fop format="application/pdf" 
       fofile="${fodatei}" 
       outfile="${out}"
       messagelevel="warn" 
       force="true" 
       throwexceptions="false" />
 </target>

Aufgerufen wird "runSingleFOP" dann in einem anderen target, z.B. mit:

 <antcall target="runSingleFOP">
  <param name="fodatei" 
         value="${fop_path}/examples/fo/tables/borders.fo" />
  <param name="out" 
         value="${fop_path}/examples/fo/tables/borders.pdf" />
 </antcall>

qrpic/FO1_1.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