Le Processeur Apache / FOP 1 © Glaus & Ruckstuhl TECFA 2002 Utilisation de FOP • FOP marche avec Cocoon (pas toujours la dernière version) • On peut créer des servlets FOP avec n’importe quel serveur Java • On peut générer des fichiers PDF (et autres formats) en mode "batch" • FOP est une classe Java 2, et une distribution binaire est disponible à l’url: http://xml.apache.org/ 2 © Glaus & Ruckstuhl TECFA 2002 FOP à Tecfa avec Cocoon • Le processeur FOP s’utilise le plus souvent avec le processeur XSLT • Le fichier XSL contient une processing instruction pour l’élément racine et une définition du namespace 3 © Glaus & Ruckstuhl TECFA 2002 FOP avec Cocoon Fichier XML <?xml version="1.0"?> <?xml-stylesheet href="hello-page-xslfo.xsl" type="text/xsl"?> <?cocoon-process type="xslt"?> 4 © Glaus & Ruckstuhl TECFA 2002 FOP avec Cocoon 5 Fichier XSL / Cocoon <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0" > <!-- rule for the whole document: root element is page --> <xsl:template match="page"> <xsl:processing-instruction name="cocoon-format">type="text/xslfo" </xsl:processing-instruction> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> ....... <!-- Definition of a page sequence --> <fo:page-sequence master-name="first"> <fo:flow flow-name="xsl-region-body" font-size="14pt" line-height="14pt"> <xsl:apply-templates/> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> © Glaus & Ruckstuhl TECFA 2002 FOP en batch Installation • Il faut installer un Java 2 (si ce n’est pas déjà fait). • Décomprimer l’archive FOP binaire qq part dans votre système. Ensuite il faut chercher dans le répertoire ou se trouvent les archives ".jar utilisées ci-dessous. • Ensuite faire/installer un fichier shell script pour lancer l’application FOP qui se trouve dans la classe Java org.apache.fop.apps.Fop 6 © Glaus & Ruckstuhl TECFA 2002 FOP en batch Fichier fop.bat à placer dans c:\bin de Windows java -cp c:\soft\fop\bin\fop.jar;c:\soft\fop\bin\batik.jar;c:\soft\fop\bin\xalan 2.0.0.jar;c:\soft\fop\bin\xerces-1.2.3.jar;c:\soft\fop\bin\avalon-framework4.0.jar;c:\soft\fop\bin\logkit-1.0.jar org.apache.fop.apps.Fop %1 %2 %3 %4 %5 %6 %7 %8 7 © Glaus & Ruckstuhl TECFA 2002 Utilisation de FOP sur Solaris 8 Ouvrir un terminal sur tecfasun5.unige.ch Aller jusqu’au répertoire où se trouvent les fichiers xml , xsl et dtd que vous allez utiliser pour Fop Taper fop dans le terminal suivi des arguments de l’application © Glaus & Ruckstuhl TECFA 2002 Arguments de l’application FOP tapez "fop" dans un terminal [INPUT] infile xsl:fo input -fo infile -xml infile -xsl stylesheet [OUTPUT] outfile -pdf outfile -awt -mif outfile -pcl outfile -txt outfile -print 9 file (the same as the next) xsl:fo input file xml input file, must be used together with -xsl xslt stylesheet input will be rendered as pdf file into outfile input will be rendered as pdf file (outfile req’d) input will be displayed on screen input will be rendered as mif file (outfile req’d) input will be rendered as pcl file (outfile req’d) input will be rendered as text file (outfile req’d) input file will be rendered and sent to the printer see options with "-print help" [Examples] Fop foo.fo foo.pdf Fop -fo foo.fo -pdf foo.pdf (does the same as the previous line) Fop -xsl foo.xsl -xml foo.xml -pdf foo.pdf Fop foo.fo -mif foo.mif Fop foo.fo -print or Fop -print foo.fo Fop foo.fo -awt © Glaus & Ruckstuhl TECFA 2002 Arguments de l’application FOP Syntaxe: Fop [options] [-fo|-xml] infile [-xsl file] [-awt|-pdf|mif|-pcl|-txt|-print] <outfile> Syntaxe pour créer un fichier pdf: fop -xml fichier.xml -xsl fichierfo.xsl -pdf fichier.pdf 10 © Glaus & Ruckstuhl TECFA 2002 Debogage de Schneider • Pour trouver des erreurs logiques dans votre feuille de style, on conseille de produire du .fo avec un processeur XSL et ensuite de valider • Sur Solaris on utilise la commande ’xslatefop’ qui fait appel au processeur Xalan xslatefop -IN fichier.xml -XSL fichierfo.xsl -XML > fichier.fo • Sur PC on vous conseille donc de faire un 2ème fichier *.bat qui s’appelle par ex, xslfop.bat et qui contient quelquechose comme: @echo off set JAVA_HOME=C:\soft\jdk1.3 set path=%JAVA_HOME%\bin;%path% REM echo path : %path% echo Traitement XSLT avec Java dans %java_home% REM TOUT LE RESTE DOIT SE TROUVER SUR UNE SEULE LIGNE !!! set CLASSPATH=c:\soft\fop\xalan-2.0.0.jar;c:\soft\fop\xerces-1.2.3.jar REM ON LANCE l’application avec les arguments de la ligne de commande java org.apache.xalan.xslt.Process %1 %2 %3 %4 %5 %6 %7 %8 11 © Glaus & Ruckstuhl TECFA 2002