py3o - générer un document odt, doc ou pdf depuis une application métier

En entreprise, il est courant d’avoir besoin de créer un rapport simple de type facture ou bon de commande au format odt, doc ou PDF, depuis une application métier de type ERP. Pour répondre à ce besoin, l’entreprise doit, en général, faire appel au prestataire qui lui a installé l’application pour lui demander d’extraire les données et de les exporter au format souhaité. Afin d’éviter cette solution coûteuse en temps et en argent, XCG a développé la suite py3o. Cet ensemble d’outils Open Source simplifie le processus d’extraction et de mise en forme.

py3o : trois composants

py3o comprend à la fois py3o.template, py3o.renderserver et py3o.fusion. py3o.template consiste en un outil de templating (gabarits) qui permet de générer facilement un document au format odt (traitement de texte LibreOffice/OpenOffice) en langage Python. py3o.renderserver, pour sa part, permet la conversion de ce document odt en PDF, doc ou tout autre format supporté par LibreOffice. Quant à py3o.fusion, il s’agit d’un serveur qui réalise conjointement les tâches des deux précédents composants et propose une API web ; il se présente comme un web service et peut être commandé par n’importe quel langage de programmation.

py3o.template : créer facilement un rapport au format odt

En utilisant votre application en langage Python, vous vous rendez compte que vous avez besoin de générer un rapport, par exemple une facture, au format LibreOffice (odt). Vous devez au préalable définir un gabarit LibreOffice intégrant des variables (cette tâche ne nécessite pas de « développement » informatique). Lors de l’exécution de py3o.template, ce gabarit sera chargé dans votre application et les variables automatiquement remplacées par les données à mettre en page, générant ainsi le document odt. À noter qu’une fois le gabarit créé, il n’est plus nécessaire de recourir à LibreOffice pour la génération du fichier odt.

py3o.template est disponible librement sur Bitbucket.

py3o.renderserver : convertir le document au format PDF ou autre

Si vous souhaitez disposer d’un document dans un format supporté par LibreOffice autre que odt, essentiellement PDF mais aussi Microsoft Word (.doc ou .docx, Rich Text), vous pouvez utiliser py3o.renderserver. Il suffit, pour ce faire, d’installer ce programme sur un serveur où est déjà installé LibreOffice. py3o.renderserver appelle en effet LibreOffice pour convertir les fichiers odt dans le format choisi puis transmet le résultat à l’application ou à l’auteur de la requête.

py3o.renderserver est disponible librement sur Bitbucket.

py3o.fusion : allier mise en page et conversion dans un web service

py3o.fusion est un serveur HTTP qui embarque à la fois py3o.template et py3o.renderserver. Il permet donc, d’une part, de mettre en page les données dans un gabarit odt prédéfini et, d’autre part, de convertir ce document dans un autre format ; il envoie ensuite le résultat à l’application ou à l’auteur de la requête.

Signalons que py3o.fusion est accessible sous forme de web service : il comporte une interface de programmation (API) web publique qui peut être appelée via n’importe quel langage (Perl, PHP…), en envoyant des requêtes POST contenant les données à traiter.

Par ailleurs, py3o.fusion fonctionne en streaming et peut ainsi gérer des fichiers volumineux en les transmettant par blocs sans saturer la mémoire.

py3o.fusion est disponible librement sur Bitbucket.

py3o dockerisé : installation et administration facilitées

py3o.renderserver et py3o.fusion sont tous deux disponibles sous forme d’images Docker, de même que LibreOffice. Cette « dockerisation », qui consiste à rassembler dans un conteneur virtuel le programme et ses dépendances et à rendre cette application exécutable de façon automatisée sur tout serveur Linux, localement ou dans le cloud, simplifie l’installation des composants ainsi que l’administration réseau.

L'image Docker de py3o.renderserver et l'image Docker de py3o fusion sont disponibles sur le Docker Hub. En suivant la documentation sur cette page, vous pourrez donc installer tous les composants en quelques commandes.