Comme aucun outil n'existait pour cela, j'ai décidé de coder trois petits utilitaires pour traiter les images dans des documents bureautiques standard (OpenDocument, donc). ConcrÚtement : extraire, compresser ou détacher les images d'un document.
Cette suite d'outils, à laquelle j'ai donné le nom wachement original de « odfimages », se compose donc de trois programmes :
- odfimgextract pour extraire les images d'un document dans un répertoire donné ;
- odfimgdetach pour détacher les images d'un document, c'est à dire les extraire, et construire un nouveau document qui ne les contient pas, mais y fait référence en tant que fichiers externes ;
- odfimgcompress pour effectuer diverses opĂ©rations de compression sur les images Ă l'intĂ©rieur d'un document : rĂ©duction de la rĂ©solution, changement de formatâŠ
Distribution
Pour le moment, tout ça est Ă tester : n'hĂ©sitez pas Ă aider et Ă me signaler tout problĂšme ou suggestion en commentaire. Ăa se passe ici, prenez le dernier snapshot. Quand j'aurai le temps, je ferai un vrai site web pour ces outils.
Ah oui, au fait, c'est sous GPL v3+.
Technique
Techniquement, c'est codĂ© en Python, et ça utilise la Python Imaging Library â uniquement pour odfimgcompress â, SAX pour traiter le XML en sĂ©rie et le module standard zipfile pour extraire les donnĂ©es. Les pages de manuel sont codĂ©es en DocBook, et compilĂ©es par XSL pour produire les nroff. Et puis tout ça est sous Git.
odfimgextract est le plus simple des trois outils : il extrait bĂȘtement du document tous les fichiers qui ont une extension d'image. Pas besoin de faire plus compliquĂ©, je pense.
odfimgdetach, lui, va lire le manifeste du document â c'est un document XML qui liste les fichiers embarquĂ©s â pour trouver les fichiers de type image. Il les extrait, les retire du manifeste, puis rĂ©Ă©crit les rĂ©fĂ©rences Ă ces images dans le contenu du document.
Enfin, odfimgcompress commence par lire le contenu du document â vu que c'est lui qui contient les dimensions physiques des cadres d'image â et, selon les options choisies, effectue divers traitement sur les images embarquĂ©es trouvĂ©es. En cas de changement de format, et donc aussi de nom, il rĂ©Ă©crit les dĂ©clarations de ces images dans le manifeste.
Commentaires
La spécification OpenDocument n'est pas si longue que ça, et, pour de petits besoins comme ceux-ci, elle serait presque agréable à parcourir.
Futur
Il me reste encore pas mal de travail :
- faire un site web ;
- écrire un autre outil odfimgattach pour intégrer les images externes auxquelles un fichier fait référence ;
- faire un paquet Debian.
Ces outils tournent peut-ĂȘtre sous des systĂšme non Unix. Personnellement je m'en moque, cette portabilitĂ© n'est pas un de mes objectifs â en revanche je ne fais rien pour ne pas ĂȘtre portable â, mais si quelqu'un veut essayer, ce sera bienvenu.
Seul le format OpenDocument est pris en charge, et aucun autre format ne sera ajouté.
Quand ce sera un peu plus mĂ»r, je ferai une dĂ©pĂȘche.
# Inspiration
PostĂ©Â par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ©Â Ă Â 6.
â pdfimages, des poppler-utils ;
â un collĂšgue qui voulait acheter un FileOptimizerÂź pour Microsoft OfficeÂź, qui fait sans doute plus que ça, mais dont au moins une fonction est de compresser les images Ă l'intĂ©rieur d'un document.
[^] # Re: Inspiration
PostĂ©Â par barmic . ĂvaluĂ©Â Ă Â 8.
Je te fĂ©licite pour ce travail mĂȘme si personnellememnt je ne m'en servirais probablement pas.
Tous les contenus que j'Ă©cris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes Ă©crits)
# 2 remarques
PostĂ©Â par Joris Dedieu (site web personnel) . ĂvaluĂ©Â Ă Â 3.
Faire un petit appel Ă magic pour confirmer la nature du fichier ne serait peut-ĂȘtre pas du luxe (on peut imaginer un odt emportant un fichier truquĂ© pour corrompre l'os que tu sais).
DeuxiĂšme remarque un petit lien vers ton repo illustrerai positivement ce journal.
[^] # Re: 2 remarques
PostĂ©Â par Octabrain . ĂvaluĂ©Â Ă Â 3.
[^] # Re: 2 remarques
PostĂ©Â par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ©Â Ă Â 4.
Quant au dĂ©pĂŽt, j'ai mis un lien vers, mais il n'est peut-ĂȘtre pas trĂšs visible : http://git.ortolo.eu/odfimages.git
[^] # Re: 2 remarques
PostĂ©Â par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ©Â Ă Â 2.
# Outil pour sysadmin en mal d'espace disque
PostĂ©Â par MĂ©dĂ©ric RIBREUX (site web personnel) . ĂvaluĂ©Â Ă Â 3.
ça faisait quelquetemps que je cherchais un application du type odfimgcompress. J'avais fait un script mais ce n'était pas toujours génial.
Cet outil en ligne de commande est clairement orienté sysadmin car la secrétaire de direction ne s'en servira probablement jamais du fait de sa non-maßtrise de la ligne de commande (enfin, je n'exclus rien mais en rÚgle générale, c'est le cas).
En revanche, le sysadmin va clairement te dire merci pour le gain de place que ton outil va permettre. Dans les organisations, en rÚgle générale, les documents bureautiques qui contiennent des images ne sont pas forcément trÚs bien conçus par leurs utilisateurs. Ces derniers cherchent avant tout à ce qu'il y ait une image et qu'elle rentre dans la page au bon endroit. Le reste (taille, résolution, algo de compression), ils s'en foutent et effectivement, il faut avoir quelques outils pour s'en occuper. Au final, on se retrouve souvent avec des odp de 50Mo pour 5 diapos ou bien un simple rapport en odt de 30 pages de texte pur faisant 25Mo parce que le logo utilisé en bas de la page 1 et qui fait 1cmx2cm est un "png" (Ooo compresse dans ce format les images par défaut) en 2048x1024 pixels.
Avec odfimgcompress, le sysadmin qui en a marre que certains utilisateurs explosent leur quota d'espace disque ou viennent le voir sans arrĂȘt pour qu'il relĂšve la taille maximale d'envoi d'un email (et qui en a surtout marre de devoir les sensibiliser en permanence Ă la gestion de la taille des fichiers) pourra gagner enfin de l'espace disque en optimisant la taille des fichiers bureautique.
Maintenant, pour juguler le problĂšme Ă la base, il faudrait modifier le comportement d'OpenOffice en indiquant la rĂ©solution par dĂ©faut des images (et que ce soit paramĂ©trable par un sysadmin) ou en offrant Ă l'utilisateur un moyen simple de la choisir (avec une extension comme Sun Presentation Minimizer ou bien carrĂ©ment intĂ©grĂ© comme on fait pour choisir la rĂ©solution des PDF). Ensuite, une petite explication sur la rĂ©solution et la taille des images Ă destination de l'utilisateur final et c'est jouĂ© ! N'oublions pas que ces derniers pestent souvent parce qu'ils ne peuvent pas envoyer tel ou tel document par email parce que celui-ci dĂ©passe la taille maximale d'envoi. Comme, en rĂšgle gĂ©nĂ©rale, on Ă©crit pour se faire lire, un document bureautique a de grandes chances d'ĂȘtre envoyĂ© par email.
Donc, merci...
[^] # Re: Outil pour sysadmin en mal d'espace disque
PostĂ©Â par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ©Â Ă Â 2.
Je plussoie. Avoir une version graphique serait un plus, mais je ne veux pas m'en occuper pour l'instant, je veux d'abord stabiliser l'interface en ligne de commande de base.
[^] # Re: Outil pour sysadmin en mal d'espace disque
PostĂ©Â par barmic . ĂvaluĂ©Â Ă Â 2.
Tous les contenus que j'Ă©cris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes Ă©crits)
# Github ?
PostĂ©Â par Pierre Bourdon . ĂvaluĂ©Â Ă Â 1.
Je viens de trouver un bug dans odfimgcompress (un truc tout con, par ailleurs), qui fait que l'outil plante sur des images dont la taille est indiquée en points (pt). Je n'ai aucun moyen pour le moment de faire un rapport de bug correct et une merge request pour corriger ça.
Ăvidemment, tu pourrais installer un Redmine, un Trac, un Bugzilla, etc. pour ça. Mais tout l'intĂ©rĂȘt des solutions comme Github est justement que c'est fait automatiquement et que le processus de signalement de bugs et de contribution peut-ĂȘtre rĂ©alisĂ© facilement dĂšs la mise en ligne du projet. LĂ , il n'y a aucun moyen simple de contribuer mon bugfix (pas de mailing list, pas de bug tracker) Ă part un mail ou un commentaire sur DLFP.
En parlant de ça, voilà un patch : http://paste.pocoo.org/show/cO7P8av32VVE2c3180xi/ .
[^] # Re: Github ?
PostĂ©Â par Anonyme . ĂvaluĂ©Â Ă Â 2.
[^] # Re: Github ?
PostĂ©Â par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ©Â Ă Â 5.
Merci !
Je n'ai aucun moyen pour le moment de faire un rapport de bug correct et une merge request pour corriger ça.
Ah mais si, c'est tout l'intĂ©rĂȘt de Git, pas besoin de dĂ©pĂŽt central. D'ailleurs, un dĂ©pĂŽt officiel, il y en a un, le mien, qui est aussi utilisable par qui que ce soit que n'importe quel dĂ©pĂŽt sur SourceForge ou Dieu sait oĂč. C'est Ă dire en lecture seule.
Donc, l'intĂ©rĂȘt de Git, c'est que tu peux faire des modifications chez toi, puis me les proposer, au choix :
â en exposant ta branche sur un dĂ©pĂŽt, puis en m'envoyant une requĂȘte de pull ;
â en m'envoyant un git-format-patch.
RequĂȘte de pull ou de merge, ça veut dire la mĂȘme chose : le but est de faire un merge, mais pour ça, i faut d'abord rĂ©cupĂ©rer la branche tierce, avec un fetch, et le pull, c'est fetch puis merge, donc on parle bien de la mĂȘme chose. En revanche je ne vois pas en quoi une requĂȘte de pull est conditionnĂ©e au fait d'ĂȘtre exposĂ© sur un gros dĂ©pĂŽt. Une requĂȘte de pull, ça se rĂ©sume Ă Â :
Salut, j'ai corrigé des trucs dans ton projet, si tu veux tu peux les récupérer sur la branche contrib de mon dépÎt <git://git.example.com/odfimages.git> en faisant :
git pull git://git.example.com/odfimages.git contrib
# LPOD ?
PostĂ©Â par gouchi (site web personnel) . ĂvaluĂ©Â Ă Â 2.
L'outil lpod-show.py permet d'extraire les images.
[1] http://lpod-project.org
[2] http://lpod-project.org/tools
[^] # Re: LPOD ?
PostĂ©Â par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ©Â Ă Â 2.
En revanche, pour extraire les images, en rĂ©alitĂ© cet outil extrait tout, et n'est donc pas plus fin qu'un bĂȘte unzip. :-)
# RE: odfimages
PostĂ©Â par Aldian . ĂvaluĂ©Â Ă Â 1.
Typiquement c'est utile pour les gens qui comme moi utilisent l'extension Cmaths, et qui ont des documents truffés de formules, avec une police différente pour le texte et pour les formules ;), mais sans doute également pour les gens qui utilisent des modÚles de documents, avec des polices spéciales et inamovibles qui forment le cadre..
[^] # Re: RE: odfimages
PostĂ©Â par đČ Tanguy Ortolo (site web personnel) . ĂvaluĂ©Â Ă Â 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.