Einbindung von FOP in Cooktop

Früheren Versionen von Cooktop lag FOP zur PDF Generierung noch bei, ab der Version 2.2 ist das nicht mehr der Fall. Die Weiterentwicklung von FOP läuft parallel weiter und die "Muster", die zur Einbindung von FOP in Cooktop angeboten greifen nicht mehr. Aus diesem Grund im Folgenden eine kurze Anleitung, wie man die Integration bewerkstelligen kann (mit Sicherheit nicht optimal, aber es funktioniert). Die verwendeten Versionen sind Cooktop 2.5 und FOP 0.20.5RC2. Diese können von www.xmlcooktop.com und xml.apache.org/fop bezogen werden.

Im Installationsverzeichnis von Cooktop liegt bereits ein angelegter Unterordner xslt/fop. In diesen werden aus dem FOP Extraktionsverzeichnis die Verzeichnisse build und lib kopiert. Damit stehen alle benötigten FOP JAVA Archive schon mal zur Verfügung (in build kann das Unterverzeichnis site gelöscht werden).

Jetzt müssen die Archive noch in Cooktop angemeldet werden. Dazu ist die Datei xlts.xml im Hauptverzeichnis von Cooktop vorgesehen. Am einfachsten kann sie über das Menü Options/System XML/Manage XSLT engines“ in Cooktop geöffnet werden. Es handelt sich um ein XML Dokument, an dessen Ende ein Abschnitt "Apache FOP" deklariert. In der Standardausstattung sieht der Abschnitt wie folgt aus:


<XSLT
name="Apache FOP"
type="external"
exec="&quot;%CONFIG%\xslt\fop\fop.bat&quot; &quot;file:///!xml!&quot; &quot;file:///!xsl!&quot; &quot;!res!&quot; &quot;!res-no-ext!.pdf&quot;"
path="%CONFIG%\xslt\fop"
supported_func="system-property"
http-support="no"
installed="no"
code-url="http://xml.apache.org/fop/">
<ENVIRONMENT>
<ITEM
name="CLASSPATH"
value="%CONFIG%\xslt\fop\fop.jar;%CONFIG%\xslt\fop\xerces.jar;%CONFIG%\xslt\fop\w3c.jar;%CONFIG%\xslt\fop\xalan.jar" />
</ENVIRONMENT>
</XSLT>


Im Prinzip wird hier nur der Aufruf der Batchdatei Fop.bat deklariert und mit passenden Parametern versehen. Zusätzlich muss das Installed-Attribut auf „yes“ gesetzt werden. Es scheint aber Probleme mit dem verwendeten file-Protokoll und den lokalen Umgebungsvariablen zu geben. Der verwendete Ansatz hier verlegt die Umgebungsvariablen in die Batchdatei. Der neue Abschnitt sieht wie folgt aus:


name="Apache FOP"
type="external"
exec="&quot;%CONFIG%\xslt\fop\fop.bat&quot; &quot;!xml!&quot; &quot;!xsl!&quot; &quot;!res!&quot; &quot;!res-no-ext!.pdf&quot;"
path="%CONFIG%\xslt\fop"
supported_func="system-property"
http-support="no"
installed="yes"
code-url="http://xml.apache.org/fop/">
<!-- <ENVIRONMENT>
<ITEM
name="CLASSPATH"
value="%CONFIG%\xslt\fop\build\fop.jar;
%CONFIG%\xslt\fop\lib\xml-apis.jar;
%CONFIG%\xslt\fop\lib\xercesImpl-2.2.1.jar;
%CONFIG%\xslt\fop\lib\xalan-2.4.1.jar;
%CONFIG%\xslt\fop\lib\batik.jar;
%CONFIG%\xslt\fop\lib\avalon-framework-cvs-20020806.jar;
%CONFIG%\xslt\fop\lib\jimi-1.0.jar;
%CONFIG%\xslt\fop\lib\jai_core.jar;
%CONFIG%\xslt\fop\lib\jai_codec.jar
" />
</ENVIRONMENT>
-->

Die Umgebungsvariablen kann man sich eigtl. sparen, da sie ja bereits in der Batchdatei deklariert werden.

Ein Hinweis von Ludger Pottmeier: Im "exec" Teil der FOP Engine beschreibung innerhalb der xslts.xml dürfen keine &quot;s stehen, da diese zusammen mit der FOP.bat nicht funktionieren. Das ist scheinbar vom Betriebssystem abhängig. Das Problem tritt bei uns lediglich bei Winnt 4.0 Clients auf.Win 2000 hat keine Probleme. Wichtig ist auch, das das die &quot;s nur bei den Parameter weggelassen werden sollten. Bei dem Auffruf von fop.bat sind sie sogar dann nötig, wenn der %CONFIGF% Pfad Leerzeichen enthält.

Die mitgelieferte Batchdatei muss durch die folgende ersetzt werden:

@echo off
set LIBDIR=lib
set LOCALCLASSPATH=build/fop.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xml-apis.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xercesImpl-2.2.1.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xalan-2.4.1.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\batik.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\avalon-framework-cvs-20020806.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jimi-1.0.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_core.jar
set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_codec.jar
java -cp %LOCALCLASSPATH% org.apache.fop.apps.Fop -xml %1 -xsl %2 -pdf %4
echo ^<FRAMESET COLS="*"^> >> %3
echo ^<FRAME SRC= %4 /^>>> %3
echo ^</FRAMESET^> >> %3

Nach einem Neustart von Cooktop sollte nach Setzen der XSLT Engine auf Apache FOP und bei einem geeigneter Kombination aus XML und XSL Dokument jetzt die Transformation nach FOP möglich sein. Ein komplettes Archiv kann auch direkt in das installationsverzeichnis von Cooktop entpackt werden (für Win NT die oben angesprochenen Anpassungen noch vornehmen). Achtung: Dabei werden Konfigurationsdateien überschrieben, ich übernehme keine Gewährleistungen.

zurück zum Anfang