OVH Cloud OVH Cloud

maj de documents ODT

6 réponses
Avatar
William Dode
slt,

J'aimerai pouvoir mettre à jour certaines zones dans un document ODT
(open document http://fr.wikipedia.org/wiki/OpenDocument)
C'est du XML, donc j'hésite entre 3 solutions

- faire un recherche/remplace textuel de $mavariable par 'mon texte'
- utiliser elementtree pour parcourir et faire la recherche
- utiliser pyuno ou quelque chose comme ça

Des tuyaux ?

--
William Dodé - http://flibuste.net

6 réponses

Avatar
Bruno Desthuilliers
William Dode wrote:
slt,

J'aimerai pouvoir mettre à jour certaines zones dans un document ODT
(open document http://fr.wikipedia.org/wiki/OpenDocument)
C'est du XML, donc j'hésite entre 3 solutions

- faire un recherche/remplace textuel de $mavariable par 'mon texte'


Probablement le plus simple et le plus rapide, mais aussi le plus fragile...

- utiliser elementtree pour parcourir et faire la recherche


elementtree est facile à utiliser, donc pourquoi pas...

NB : Si ça t'intéresse, j'ai bricolé une petite API pour simplifier la
génération de fragments XML avec elementtree, genre
print builder.montag("content", attr='attr')
=> "<montag attr='attr'>content</montag>"

D'un autre côté, point de vue ressources et perfs, un parseur SAX
serait probablement plus efficace... A toi de voir selon ton besoin
exact, les contraintes, la taille potentielle des documents etc

- utiliser pyuno ou quelque chose comme ça


Jamais testé.

Des tuyaux ?


Bin... Tu ne dis pas grand chose du contexte et des contraintes, donc je
ne vois pas quoi ajouter.



--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
olive
ElementTree est très bien, plus facile à mettre en oeuvre
et AUSSI rapide qu'un moteur SAX si bien utilisé.

Mais il y a encore mieux : LXML qui est basé sur la même API
mais qui gère mieux les espaces de nom par exemple,
ce qui est essentiel lorsque l'on manipule des fichiers OpenDocument.

Olive.
Avatar
MC
Bonsoir !

Perso, je passe par COM/ole-automation.

Mais le besoin est un peu différent. Typiquement, le logiciel ouvre un
document-type, effectue une série de "chercher/remplacer" ou de
"chercher/insérer du texte", puis enregistre sous un autre
nom/répertoire, imprime (éventuellement), et ferme le document.

Mais cela impose d'avoir Open-Office.org et windows.

Et, comme OOo est très long à ouvrir, je l'ouvre en début de session
(de travail), et ne le ferme qu'en fin de session.

Si ça correspond à ton besoin et à tes ressources, je pourrais filer du
code.

--
@-salutations

Michel Claveau
Avatar
olive
Michel,

je suis également interressé par le pilotage de OO via COM.

Pourrais-tu STP donner qque exemples (lancement de OO, ouverture d'un
doc, enregistrement au format HTML/UTF-8, fermerture du doc ...).

Je sais faire tout ça pour Word mais par pour OO.

Olive.
Avatar
William Dode
On 10-10-2006, MC wrote:
Bonsoir !

Perso, je passe par COM/ole-automation.


J'ai vu un exemple que tu as posté y a quelques temps déjà. Mais
à priori, l'attaque directe des fichiers xml semble suffire à ce que je
veux faire, ça sera plus rapide et moins contraignant. J'ai fait un
essai vite fait avec la librairie zip et un recherche/remplace purement
texte et ça marche tout bêtement.

J'ai ausi trouvé http://ooopy.sourceforge.net/ qui semble assez bien
foutu et doit permettre de faire des choses un peu plus complexes sur le
même principe d'attaquer directement les fichiers xml. Pas essayé mais
il doit y avoir de l'avenir si le format odt se répand.

--
William Dodé - http://flibuste.net

Avatar
William Dode
On 10-10-2006, Bruno Desthuilliers wrote:
William Dode wrote:
slt,

J'aimerai pouvoir mettre à jour certaines zones dans un document ODT
(open document http://fr.wikipedia.org/wiki/OpenDocument)
C'est du XML, donc j'hésite entre 3 solutions

- faire un recherche/remplace textuel de $mavariable par 'mon texte'


Probablement le plus simple et le plus rapide, mais aussi le plus fragile...

- utiliser elementtree pour parcourir et faire la recherche


elementtree est facile à utiliser, donc pourquoi pas...

NB : Si ça t'intéresse, j'ai bricolé une petite API pour simplifier la
génération de fragments XML avec elementtree, genre
print builder.montag("content", attr='attr')
=> "<montag attr='attr'>content</montag>"

D'un autre côté, point de vue ressources et perfs, un parseur SAX
serait probablement plus efficace... A toi de voir selon ton besoin
exact, les contraintes, la taille potentielle des documents etc

- utiliser pyuno ou quelque chose comme ça


Jamais testé.

Des tuyaux ?


Bin... Tu ne dis pas grand chose du contexte et des contraintes, donc je
ne vois pas quoi ajouter.


Très peu à priori, l'utilisateur va sélectionner un document près
enregistré et je dois mettre à jour certaines zones et créer un nouveau
document avec.

--
William Dodé - http://flibuste.net