Documentation/ODF documents generation tools/fr

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

odfpy

 * https://pypi.org/project/odfpy/
 * https://github.com/eea/odfpy
 * https://github.com/eea/odfpy/wiki
 * maintenance active (mais peu de versions)
 * dernière version : 2020-01-18
 * exemples: https://github.com/eea/odfpy/tree/master/examples
 * pas spécifiquement prévu pour de la fusion mais peut le faire, des exemples pourraient être fournis

odpdown

 * https://github.com/thorstenb/odpdown
 * Non maintenu activement
 * Dernière version : 2015-03-13

odsgenerator

 * https://github.com/jdum/odsgenerator
 * last release: 2021-05-05

ODF Toolkit
Projet TDF officiel, collaboration avec Apache


 * https://github.com/tdf/odftoolkit
 * https://odftoolkit.org/index.html
 * maintenance active
 * dernière version : 2019-10-06

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é.


 * https://github.com/PHPOffice/
 * PhpSpreadSheet
 * PhpWord
 * PhpPresentation, PhpProject & PhpVisio
 * maintenance active
 * dernière version : 2019-12-02

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.
 * https://www.tinybutstrong.com/opentbs.php?doc
 * maintenance active
 * dernière version : 2019-06-17

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


 * https://github.com/webodf/WebODF https://webodf.org/
 * dernière version : 2015-09-04
 * dernière mise à jour : 2019-02-08

Nexedi cloudooo

 * https://github.com/nexedi/cloudooo
 * https://lab.nexedi.com/nexedi/cloudooo
 * maintenance active (mais peu de versions)
 * dernière mise à jour: 2020-01-02
 * pas d'exemples
 * pas spécifiquement prévu pour de la fusion mais devrait pouvoir le faire
 * utilisé par Libriciel pour WEBDELIB (génération de délibérations dans les collectivités locales)

NDCODFAPI Project

 * https://github.com/NDCODF/ndcodfapi_service
 * maintenance active
 * dernière version : 2019-09-05
 * documentation: https://github.com/NDCODF/ndcodfapi_service/blob/master/Developer_Guide.md
 * La documentation n’est pas totalement traduite en anglais.

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.