Package: xml-archive-to-pdf
Transformation d’un fichier xml de typeunistra:archiveen fichier pdfInstallationpipinstallxml-archive-to-pdfUsagexml-archive-to-pdf-itests/data/pathfinder_1.xml-o/tmp/pathfinder_1.pdf--logotests/data/logo.png--fonttests/data/CustomFontDocumentationStructuration d’un fichier xml de typeunistra:archiveL’objectif est de pouvoir générer simplement un fichier pdf en se basant sur un fichier xml conforme à la normeunistra:archive.
En amont, il faudra s’assurer que le fichier xml soit validé par un schéma xsd et qu’il contient toutes les informations nécessaires à la fabrication du pdf.On aura principalement :Des blocs séparés par des titresDes clés avec un intitulé parlant dans l’attribut nameDes valeursUne mise en forme de tableau dans l’attribut styleConcernant le rendu des éléments dans le pdf :Lorsque l’on met l’attributstyle=”table”, l’ensemble du bloc est affiché comme un tableau.
Le premier élément permet de définir le nom des colonnes. Tous les éléments suivants doivent avoir les mêmes colonnes.
Celui-ci doit être structuré de la même manière que l’exemple ci-dessous.En dehors des tableaux, lorsqu’un tag possède des enfants, c’est que c’est un titre. Sinon, c’est un ensemble clé-valeur.Il y 6 niveaux d’indentation maximum et les tableaux ne sont pas indentésPour les labels, si l’attribut name est rempli, on l’utilise. S’il est absent, on utilise le nom du tag et s’il est vide, on met un blanc.Exemple d’un fichier xml<?xml version="1.0" encoding="UTF-8"?><!-- Racine du fichier, id et source sont optionnels, le name correspond au titre --><personnagexmlns="fr:unistra:di:archive:pathfinder:v1"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="fr:unistra:di:archive:pathfinder:v1 pathfinder_v1.xsd"id="1"source="pathfinder"name="document récapitulatif du personnage 1 de pathfinder"><!-- Affiche le sous-titre de l'état civil --><etat-civilname="son état civil"><!-- Affichage de clés/valeurs --><nom>Sombre-crâne</nom><agename="son âge">20</age><!-- Nouveau bloc avec un sous-titre --><classesname="classes et niveaux"><!-- Ici on affiche le sous-titre de name --><classename="Première classe"><nom>Barbare</nom><niveau>3</niveau></classe><!-- Ici name est vide, donc ça affiche un titre vide --><classename=""><nom>Prêtrecombattant</nom><niveau>1</niveau></classe><!-- Lorsqu'il n'y a pas d'attribut name, on affiche le nom du tag. Ici classe --><classe><nom>Moine</nom><niveau></niveau></classe></classes></etat-civil><quetesstyle="title"name="Quêtes en cours"/><!-- Element de style tableau --><armesstyle="table"name="Liste des armes"><arme><nom>cimeterre</nom><type>àdeuxmains</type><porteename="portée">3</portee><degatname="dégât">7</degat><elementname="élément">feu</element><raretename="rareté">épique</rarete><prix>1000</prix><qualitename="qualité">trèsbonne</qualite></arme><arme><nom>arc</nom><type>àdistance</type><portee>8</portee><degat>2</degat><element>glace</element><rarete>simple</rarete><prix>100</prix><qualite>mauvaise</qualite></arme><arme><nom>épée</nom><type>àunemain</type><portee>5</portee><degat>3</degat><element>terre</element><rarete>rare</rarete><prix>500</prix><qualite>moyenne</qualite></arme></armes><familier><nom>ronron</nom><type>sanglier</type></familier></personnage>Légende de l’exempleattributsname : intitulé parlant qui servira de label/titre à la place du nom du tagstyle : style d’un bloctable: affichage sous forme d’un tableau. Le tableau se redimensionne automatiquement en fonction du nombre de colonnes.
Attention néanmoins à ne pas utiliser trop de colonnes ou des éléments trop gros, car le rendu pourrait ne pas correspondre vos attentes.title: permet de forcer l’affichage sous forme de titre. Ca peut être utile dans le cas où on veut afficher un tag vide comme un titre et
non pas comme une clé/valeur.RésultatFichier pdf de l’exempleAutres–logo : le paramètre logo est optionnel et permet de rajouter un logo sur le document en haut à droite–font : le paramètre font est optionnel et permet de remplacer la font par défaut par une autre font
Attention, le dossier qui contiendra la font doit obligatoirement avoir les 4 fichiers suivants:CustomFont-BoldOblique.ttfCustomFont-Bold.ttfCustomFont-Oblique.ttfCustomFont.ttf