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.