Debian logo [inetdoc.LiNUX]

5. Génération des fichiers PDF avec FOP et Java

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.

5.1. Paquets Java Debian

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] Note

Avec cette version libre de Java, le fameux plugin est fourni avec le paquet baptisé icedtea6-plugin.

## 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

5.2. Installation de fop à partir du dépôt SVN

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 ;)).