Publication séparée des concepts et des tâches
Présentation général
L'idée est de pouvoir dans un premier temps publier au format PDF des fiches de concepts et de taches indépendamment du manuel complet via Flying Saucer. Nous avons alors écrit un XSLT permettant de publier des concepts et des tâches à partir du langage DITA vers le langage XHTML. Une feuille de style CSS est associé à ce document XHTML. Ensuite nous fournissons en entrée a Flying Saucer le fichier XHTML généré par la XSLT afin d'obtenir un rendu final au format PDF.
Complément
Le XSLT (publiPDF.xsl) ayant permit de générer les taches et les concepts sera réutilisable dans un second temps pour produire un manuel de vol complet ou un livret avec les fiches procédures à destination des pilotes par exemple. Notons aussi qu'il sera très facile de faire de nouveaux thèmes de publication PDF grâce à la puissance de CSS.
Rendu PDF d'une Task et d'un Concept
Le rendu PDF est proche du rendu HTML et la charte graphique est conservée pour apporter un confort à l'utilisateur final. Il n'y a pas de partie cachée ni de partie non publiée comme on pourrait le faire dans un format de publication dynamique.
Voici un extrait du rendu PDF d'une Task
En haut de chaque page est rappelé le titre de la tache, puis ensuite sont introduit le contexte, les pré-requis s'il sont présent et les différentes étapes dans lesquels se trouve les sous-étapes.
De même voici un extrait du rendu d'un Concept en PDF
Quelque problème spécifique à la publication PDF à partir d'un HTML
Dans un fichier HTML "Simple" il n'y a pas vraiment de page avec des dimensions finies contrairement à une publication PDF. Cela soulève alors certains problème lors de l'utilisation de Flying Saucer.
Notamment lors de la publication de tableaux, ceux-ci sont coupés et donne un rendu pas très propre, pour corriger ce problème nous avons placés dans le CSS, à la classe .table, la propriété suivante :
page-break-inside: avoid ;
Cependant si on veut que le titre du tableau se répète à chaque début de page, il faut alors placer le titre entre les balises <thead> (et non dans tbody) et rajouter la propriété CSS suivante :
-fs-table-paginate: paginate;
Notons que cette dernière propriété n'est pas du CSS standard et à été rajoute par flying saucer pour justement régler ce problème.
Voici respectivement un exemple de rendu sans traitement et avec traitement (répétition de l'en-tête ) d'un tableau long :
Sans Traitement
Avec traitement
Un problème similaire serait celui de la numérotation des pages.
Quelques spécificités de Flying Saucer
Nous avons mis dans le début du XSLT le code suivant <xsl:output method="xml" />, sinon lors de la génération du HTML, que nous avons réalise a partir de notre XSLT depuis Oxygen celui-ci génère en sortie <link rel="stylesheet" type="text/css" href="../styles/styles.css"> au lieu de <link rel="stylesheet" type="text/css" href="../styles/styles.css"/>, (ie) la balise auto-fermante est supprimé. Cela génère alors une erreur dans Oxygen.
Il faut respecter le codage UTF-8 sous peine d'erreur aussi dans Flying Saucer.