Apache FOP (Formatting Objects Processor) est l'outil qui permet de générer les versions imprimables au format PDF à partir des documents sources DocBook XML et d'une feuille de styles XSL-FO. Ce processeur est développé en Java et c'est incontestablement l'outil libre le plus avancé sur la production de versions imprimables.
La version du Java Runtime Environment (JRE) influe beaucoup sur le fonctionnement de fop. Par conséquent, il est préférable d'utiliser une version la plus récente possible. Dans ce document on s'appuie sur les paquets construits à partir de la version libre de la chaîne de développement Java baptisée OpenJDK.
Pour une installation Java «standard» comprenant la chaîne de développement, on obtient la liste suivante :
$ dpkg -l *openjdk* | grep ^ii
ii openjdk-6-jdk 6b16-1.6.1-2 OpenJDK Development Kit (JDK)
ii openjdk-6-jre 6b16-1.6.1-2 OpenJDK Java runtime, using Hotspot JIT
ii openjdk-6-jre-headless 6b16-1.6.1-2 OpenJDK Java runtime, using Hotspot JIT (headless)
ii openjdk-6-jre-lib 6b16-1.6.1-2 OpenJDK Java runtime (architecture independent libraries)
Comme il est possible de faire coexister plusieurs versions de la chaîne de développement Java sur le même système, on doit s'assurer que la version voulue sera bien utilisée par les autres outils.
|
Note |
|---|---|
|
Avec cette version libre de Java, le fameux
plugin est fourni avec le paquet baptisé
|
## update-java-alternatives -v --jre --plugin -s java-6-openjdk
resetting java alternatives
Il reste ensuite à vérifier que le paquet correspondant au processeur fop est bien installé :
# dpkg -l fop* | grep ^ii ii fop 1:0.95.dfsg-5 XML to PDF Translator
Pour bénéficier des toutes dernières avancées sur le développement de fop, il est nécessaire de construire l'outil à partir de ses sources. Pour ce faire, il faut télécharger les sources à partir du dépôt du serveur Subversion du projet. On passe ensuite au opérations de construction avec ant, l'équivalent de make dans l'environnement Java.
La récupération de l'arborescence des sources du projet fop se fait avec svn la commande principale du paquet subversion :
:~$ mkdir ~/SVN/fop :~$ cd ~/SVN/fop/ :~/SVN/fop$ svn co https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk <snip/> A trunk/examples/embedding/README A trunk/examples/embedding/build.xml U trunk Révision 410929 extraite.
Après ce téléchargement initial, toutes les opérations de mises à jour
se font à l'aide de la commande svn update.
On construit ensuite le processeur à l'aide des directives données à
la commande ant. La première instruction
ant clean élimine toute trace de fichiers
binaires issus de la construction précédente et la seconde
ant package construit les paquets
jar nécessaires à l'utilisation de
fop.
Nettoyage de l'arborescence de développement.
:~/SVN/fop/trunk$ ant clean
Buildfile: build.xml
clean:
[delete] Deleting directory /home/phil/SVN/fop/trunk/build
BUILD SUCCESSFUL
Total time: 0 seconds
Compilation de la nouvelle version de fop.
:~/SVN/fop/trunk$ ant package
Buildfile: /home/phil/SVN/fop/trunk/build.xml
Trying to override old definition of task javac
Trying to override old definition of task junit
init-avail:
[echo] ------------------- Apache FOP svn-trunk [1999-2010] ----------------
[echo] See build.properties and build-local.properties for additional build settings
[echo] Apache Ant version 1.8.0 compiled on March 11 2010
[echo] VM: 19.1-b02, Sun Microsystems Inc.
[echo] JAVA_HOME: ${env.JAVA_HOME}
[echo] JAI Support NOT Present
[echo] JCE Support PRESENT
[echo] JUnit Support PRESENT
[echo] XMLUnit Support PRESENT
init:
<snip/>
package:
BUILD SUCCESSFUL
Total time: 8 seconds
On peut maintenant vérifier que l'outil est disponible.
:~/SVN/fop/trunk$ ./fop -version
FOP Version svn-trunk
Dernière étape essentielle, il faut positionner la variable
FOP fichier principal des règles de génération des pages
XHTML et des fichiers imprimables :
Makefile.Rules.
# fop -> Génération FO-PDF FOP=~/SVN/fop/trunk/fop
Voilà, c'est prêt !. On dispose maintenant d'un processeur qui va permettre de générer des documents PDF en quantités industrielles. Il ne reste plus qu'à rédiger ;)).
Vous êtes ici :