Documentation/Outils de génération de documents ODF

    From The Document Foundation Wiki
    This page is a translated version of the page Documentation/ODF documents generation tools and the translation is 96% complete.
    Other languages:

    Ressources de développement

    Portail TDF dédié au développement : https://wiki.documentfoundation.org/Development

    Outils de génération ODF

    Python

    odfpy
    odpdown
    odsgenerator
    • last release: 2021-05-05

    Java

    ODF Toolkit

    Projet TDF officiel, collaboration avec Apache

    PHP

    PHPOffice

    Projet tiers, activement maintenu. Le développeur principal (Franck Lefevre) avait d’ailleurs contacté la communauté francophone de LibreOffice par le biais de son compte Twitter afin de pouvoir poser des questions à un gourou de l’ODF. Contacter Svante Schubert, travaillant pour CIB, lui a été recommandé.

    OpenTBS

    Projet actif, plugin pour TinyButStrong mais utilisable sans TinyButStrong. Très simple d’utilisation, pas d’installation, seuls deux fichiers php contenant les classes sont nécessaires. Basé sur des modèles (template) définis par l’utilisateur.

    JavaScript

    WebODF

    Bibliothèque JavaScript permettant de rendre un document ODF à l’aide de HTML et CSS. Initialement développé par KO GmbH.

    XmlRPC

    Nexedi cloudooo

    Http

    NDCODFAPI Project

    LibreOffice

    Il est également possible de générer des documents ODF avec un traitement exécutant LibreOffice sur un serveur. Ce traitement LibreOffice pourra exécuter une macro qui elle-même générera un ou des documents, par exemple via un publipostage. Pour appeler une macro sur un serveur Linux pour une exécution sans interface graphique :

       libreoffice --nofirststartwizard --norestore --headless --invisible  "macro:///bibliothèque.module.macro(arg1,arg2...)"
    

    Méthode générique, basée sur des paquets Python standard

    Le standard ODF consiste à faire un fichier comprimé (par ZIP), qui contient diverses données, la plupart au format XML. Il n’y a aucune raison qu’un outil générique pour traiter le XML soit écarté. Ça suppose bien sûr que la personne qui écrit un script sache ce qu’est le XML, ce que sont des arbres, des sous-arbres, des nœuds, des attributs, etc. Une bonne façon de travailler consiste à partir d’un fichier modèle (template), qui contient déjà les parties constantes du document à générer, avec les bons styles, et une structure convenable, puis à créer à côté un script léger qui récupère des données ailleurs, et se sert de l’arbre DOM du modèle pour générer un document élaboré. Ainsi, on sépare facilement la forme (dans le modèle) du fond (les traitements des données).

    paquet zipfile

    Le paquet Python zipfile permet d’ouvrir les fichiers .odt, .ods, . odg, etc. et d’accéder à leurs contenus, en particulier le fichier content.xml qui code le contenu du document, le répertoire Pictures qui contient les images, etc.

    paquet xml.dom.minidom

    Avec la classe minidom, il est facile d’ouvrir le fichier content.xml et d’en analyser le contenu sous forme d’un arbre syntaxique (l’arbre DOM). Quand on a cet arbre, on peut « jardiner » : trouver une branche particulière, la supprimer, ou la modifier, ou en faire des copies et les greffer à l’arbre avant ou après telle autre branche.