Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/unistra/xml-archive-to-pdf

Transformation d'un fichier xml de type *unistra:archive* en fichier pdf
https://github.com/unistra/xml-archive-to-pdf

Last synced: 10 days ago
JSON representation

Transformation d'un fichier xml de type *unistra:archive* en fichier pdf

Awesome Lists containing this project

README

        

xml-archive-to-pdf
==================

.. image:: https://travis-ci.org/unistra/xml-archive-to-pdf.svg?branch=master
:target: https://travis-ci.org/unistra/xml-archive-to-pdf
:alt: Build

.. image:: http://coveralls.io/repos/unistra/xml-archive-to-pdf/badge.png?branch=master
:target: http://coveralls.io/r/unistra/xml-archive-to-pdf?branch=master
:alt: Coverage

.. image:: https://img.shields.io/badge/status-stable-green.svg
:target: https://gitlab.unistra.fr/di/alumni-forms
:alt: Status

.. image:: https://img.shields.io/badge/python-3.4-blue.svg
:target: https://www.python.org/download/releases/3.4.0/
:alt: Python 3.4

.. image:: https://img.shields.io/badge/licence-PSF-blue.svg
:target: https://docs.python.org/3/license.html
:alt: Licence

Transformation d'un fichier xml de type *unistra:archive* en fichier pdf.

Installation
------------

L'application est déployée sur pypi. Il suffit donc de l'installer directement avec pip:

.. code-block:: bash

pip install xml-archive-to-pdf

Usage
-----

Après l'installation, la commande *xml-archive-to-pdf* est disponible:

.. code-block:: bash

xml-archive-to-pdf

Usage:
xml-archive-to-pdf (-i ) (-o )
xml-archive-to-pdf (-i ) (-o ) -l
xml-archive-to-pdf (-i ) (-o ) -f
xml-archive-to-pdf (-i ) (-o ) -l -f

Options:
-h --help aide
-i , --input
-o , --output
-l , --logo
-f , --font

Exemple d'utilisation:

.. code-block:: bash

xml-archive-to-pdf -i tests/data/pathfinder_1.xml -o /tmp/pathfinder_1.pdf --logo tests/data/logo.png --font tests/data/CustomFont

Développement
-------------
Créer l'environnement de développement:

.. code-block:: bash

mkvirtualenv -p /usr/bin/python3.4 xml_archive_to_pdf
workon xml_archive_to_pdf
pip install -r requirements.txt
python setup.py develop

Déployer sur pypi:

.. code-block:: bash

python setup.py sdist upload

Fabriquer un *exe* pour Windows :

.. code-block:: bash

sudo apt install wine-development
./build-exe.sh

Tests
-----

Pour lancer les tests unitaires, vous pouvez utiliser *tox*. Ce sont les tests exécutés par la CI :

.. code-block:: bash

pip install tox
tox

Documentation
-------------

Structuration d'un fichier xml de type *unistra:archive*
********************************************************

L'objectif est de pouvoir générer simplement un fichier pdf en se basant sur un fichier xml conforme à la norme *unistra: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 titres
* Des clés avec un intitulé parlant dans l'attribut name
* Des valeurs
* Une mise en forme de tableau dans l'attribut style

Concernant le rendu des éléments dans le pdf :

* Lorsque l'on met l'attribut *style="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és
* Pour 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
************************

.. code-block:: xml







Sombre-crâne
20




Barbare
3



Prêtre combattant
1



Moine








cimeterre
à deux mains
3
7
feu
épique
1000
très bonne


arc
à distance
8
2
glace
simple
100
mauvaise


épée
à une main
5
3
terre
rare
500
moyenne



ronron
sanglier

Légende de l'exemple
********************

attributs
#########

* name : intitulé parlant qui servira de label/titre à la place du nom du tag
* style : style d'un bloc

* table: 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ésultat
********

* `Fichier pdf de l'exemple `_

Autres
*******
* --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.ttf
* CustomFont-Bold.ttf
* CustomFont-Oblique.ttf
* CustomFont.ttf