Petit bricolage pour importer des fichiers ODT en masse dans Opale

Bon, j’ai prévenu dans le titre, c’est du bricolage, mais j’avais des utilisateurs qui avaient produit toute une arborescence de dossiers et de fichiers ODT et qui voulaient les passer dans Opale.

A priori, comme on ne peut faire ça que par copier-coller (ou bien j’ai pas vu), j’ai commencé par faire une petite moulinette qui transforme un fichier ODT en XML conforme à Opale.
Et puis, de fil en aiguille, je l’ai un peu améliorée pour finalement pouvoir transférer toute une arborescence d’articles dans Opale d’un coup : odt2opale.
Ça marche aussi pour créer des termes de glossaires.
J’ai fait ça en terminal Linux, compatible MacOS.
Si des fois ça peut servir à quelqu’un, c’est là : https://sourceforge.net/projects/odt2opale

Je me suis aussi amusé à créer automatiquement des liens dans les grains de contenu, en allant chercher les termes de glossaire dans un dossier “Glossaire” la racine de l’atelier : link-glos-opale

Bon, je ne sais pas si ça servira, mais en tout cas ça fonctionne pour notre projet.

Et puis, ça donnera peut-être quelques idées de nouvelles fonctionnalités ?

3 « J'aime »

Merci beaucoup pour ce partage, ça a l’air très pratique :slight_smile: Il y a aussi http://hdoc.crzt.fr/www/co/odt2hdoc_3.html qui pourrait t’intéresser.

1 « J'aime »

Après, si c’était à refaire, je ne m’y prendrais plus comme ça : j’ai commencé par utiliser unoconv pour passer de l’ODT au HTML, puis j’ai fait les substitutions de balises.

Problème : les images sont compactées en dur dans le fichier HTML par unoconv, ce qui prend du temps et n’est plus récupérable ensuite pour Opale.

C’est là que j’ai pensé, un peu tard, à dépiauter l’ODT. Du coup, en amont, je décompresse l’ODT, je vais piocher les fichiers images, je les renomme, je les mets au frais et je remplace les balises dans le fichier XML par du texte, histoire de shunter le compactage des images par unoconv.

Et là je me dis que j’aurais pu commencer par ça et traiter directement le fichier XML pour faire les substitutions de balises.

Bonjour,

Je viens de tester le script et il fonctionne très bien.

Hum, hum…pourrais-tu t’amuser à le porter sous windows pour convaincre des personnes lors de formation ?
A moins effectivement qu’il serait possible à l’avenir de l’inclure directement dans une extension d’opale.

Et encore merci pour ce partage qui va me faire gagner du temps.

Alors, j’avoue que ça fait quelques années que je suis passé à Linux, sans aucun regret, et que du coup je ne connais pas vraiment les possibilités en lignes de commande (jadis ça s’appelait le MS-DOS). Mais de ce que j’en sais , c’est assez éloigné de la ligne de commandes (bash) sous Linux. Sous Mac c’est compatible car la base est la même.

Après, il y a trois solutions :

  1. Utiliser une machine virtuelle sous Windows (genre VirtualBox) qui doit permettre d’installer un Linux “dans une boîte” et donc faire marcher le script. Un Linux Mint devrait être assez proche de Windows (du moins de l’ancienne version Windows XP) d’un point de vue interface et donc facile à utiliser.
  2. Installer le script sur un serveur (en grande majorité tournant sous Linux) et faire une petite interface en PHP qui récupère les fichiers et lance le script.
  3. Inclure ces fonctionnalités dans Opale (en Perl il me semble, donc si la méthode peut être semblable, il faut tout réécrire).

Il n’est pas exclu que je m’attelle à la solution 2) mais quand ?

Mais quand tu voudras t’amuser bien sûr :slight_smile:

Je vote pour la solution 2 :slight_smile: Même si, pour ma part je suis également
sous Linux :slight_smile:

Bon, je suis vraiment bien occupé pour l’instant, mais ça devrait pouvoir se faire avec :

  • une page HTML avec un formulaire pour choisir les options (grains de contenu ou termes de glossaire, garder ou non les fichiers ODT) qui renvoie vers une page PHP
  • un petit javascript pour pré-contrôler les données rentrées dans le formulaire
  • une page PHP qui traite les infos, récupère un zip (arborescence ODT), fait tourner le script bash, donne un lien vers le fichier à télécharger à la fin…
  • le script bash légèrement modifié pour prendre les options en arguments au lieu de les demander à l’utilisateur, dézipper…

Après, pour faire propre, il faudrait penser à un moyen de nettoyer les fichiers sur le serveur pour ne pas que ça s’accumule de trop…