07 novembre 2008

Convertir de l'EAD en PDF

Suite à une interrogation du 4 novembre sur le Yahoo Group des archivistes relayée ce matin par Thinking Twice, voici une petite contribution à la question de comment convertir en série limitée ou en masse des fichiers EAD en XML.

On peut envisager 2 cas :

  • I. vous souhaitez une fonction qui vous permette de proposer de manière statique des fichiers PDF consultables et téléchargeables (càd que les fichiers PDF sont stockés à un moment donné sur un serveur et disponibles en ligne).
  • II. Vous voulez proposer à l'internaute de générer un PDF à la volée au moment où il consulte tout ou partie d'un inventaire.

I. La première consiste à avoir sur son ordinateur un fichier EAD, et à le convertir en PDF, pour ensuite le rendre disponible en ligne.

Pour cela, les seuls "outils" nécessaire est :

1. une feuille XSL-FO, c'est à dire une feuille XSL qui va convertir le fichier XML (EAD) en un autre fichier XML en changeant les balises EAD pour mettre des balises FO (Formating Object) qui sont des balises spécifiant la mise en forme du document (taille des marges, numérotation automatique des pages, caractères gras, polices utilisées, etc.).

Une telle feuille XSL-FO est déjà disponible à l'adresse http://www.archivists.org/saagroups/ead/stylesheets.html. Peut-être faut-il l'adapter aux pratiques françaises (je ne l'ai pas testée). En cherchant un peu, on en trouverait certainement d’autres.

2. un processeur XSL-FO permettant de transformer ce fichier XSL-FO en PDF

La procédure est donc :

1. j'ouvre le fichier EAD avec mon éditeur XML favori, qui contient un processeur XSL. Je lui applique la feuille XSL-FO.

2. J'obtiens ainsi un nouveau fichier XML, avec des nouvelles balises (et certaines informations, notamment internes, auront disparu).

Les balises seront toutes préfixées par "fo:".

3. Je fais passer ce nouveau fichier XML dans le processeur XSL-FO (par exemple : http://xmlgraphics.apache.org/fop/). Cela me produit un beau fichier PDF, que je peux mettre en ligne.

Remarque supplémentaire

Si l'on désire convertir 150 fichiers EAD en PDF, selon la même mise en forme, il est possible de lancer les conversions en une fois, il suffit de disposer d’une liste des fichiers EAD à convertir.

Cette liste serait sous la forme d’un fichier XML du genre :

<fichiers>
<fichier>fichier-ead-1.xml</fichier>
<fichier>fichier-ead-2.xml</fichier>
<fichier>fichier-ead-3.xml</fichier>
<fichier>fichier-ead-4.xml</fichier>
etc.
<fichier>fichier-ead-150.xml</fichier>
</fichiers>
Et la feuille de style XSL-FO déciderait que pour chaque balise <fichier> trouvée, elle ouvre le document correspondant, et applique la conversion XSL-FO.

La feuille de conversion mentionnée ci-dessus (http://www.archivists.org/saagroups/ead/stylesheets/ead2fo.xsl) indique qu’il faut atteindre la balise "/ead" pour lui appliquer telle et telle transformation.

Il faudrait rajouter en tête quelques lignes comme suit :

<xsl:template match="/">
<xsl:for-each select="//fichier">
<xsl:variable name="fichier_complet">
<xsl:copy-of select="document(self::node())//*">
</xsl:variable>
<xsl:for-each select="$fichier_complet//ead">
<xsl:call-template name="ead">
</xsl:for-each>
</xsl:for-each>
</xsl:template>

II. La seconde fonctionnalité (génération de fichiers PDF dynamiques, "à la demande") nécessite une intégration à l'interface de consultation de l'inventaire. Mais il est plus simple de prendre le code HTML (issu de la conversion EAD->HTML) qui apparaît à l’écran pour en faire une conversion PDF : la conversion HTML -> PDF est un processus bien rodé, mais ne permet pas de disposer en PDF de l’intégralité de l’inventaire (seulement ce qui s’affiche à l’écran).


PS : à propos des bonnes pratiques de l'EAD, un message vient d'être publié sur Biblio-fr.


1 commentaire:

Octobre a dit…

Merci, je fais le lien vers la réponse à partir de mon post !