Conversions de formats d'images

De La Mouche VII

Sur cette page je synthétise les astuces que j'ai trouvées pour parvenir à exporter dans les formats que je veux à partir d'un logiciel donné. J'ai une nette préférence pour les formats vectoriels, surtout quand il s'agit de produire des documents, c'est pourquoi je passe parfois par des techniques détournées pour parvenir à mes fins plutôt que d'utiliser un export bitmap qui fonctionne bien dans l'immense majorité des applications.

EPS vers PDF

Une seule commande :

epstopdf image.eps

Dans un Makefile, ça donne :

%.pdf: %.eps
        epstopdf $<

PDF vers EPS

Assez simple en deux commandes :

pdftops image.pdf
ps2eps image.ps

Dans un Makefile, ça donne :

%.eps: %.pdf
        pdftops $< \
                && ps2eps $(<:.pdf=.ps)

SVG vers PDF et inversement

Inkscape fonctionne très bien pour convertir des images SVG en PDF, y compris en ligne de commande :

inkscape -A image.pdf image.svg

Et inversement, pour convertir une image PDF en SVG :

inkscape -l image.svg image.pdf

Voir infra pour plus de détails sur les différentes versions d'Inkscape.

Dans un Makefile, on pourra écrire ceci (--export-pdf et --export-plain-svg sont les options longues pour -A et -l, respectivement) :

%.pdf: %.svg
        inkscape --export-pdf=$@ $<

%.svg: %.pdf
        inkscape --export-plain-svg=$@ $<

Dia vers EPS et PDF

L'export PDF de dia (version 0.97) fait n'importe quoi. Il faut donc passer par l'export EPS utilisant les polices Pango (avec les polices Latin1 c'est laid) :

  • Fichier -> Exporter. En face de « Déterminer le type du fichier », choisir « PostScript encapsulé (EPS) utilisant les polices Pango (*.eps) »
  • Ou en ligne de commandes :
dia -e image.eps image.dia

Consultez la page de manuel pour connaître les options d'export (notamment la sélection des calques).

Une fois le fichier EPS exporté, utiliser la commande epstopdf pour la convertir en PDF comme vu plus haut.

Dans un Makefile, on peut écrire ceci (--export est la version longue de l'option -e) :

%.pdf: %.dia
        dia --export=$@ $< \
                && epstopdf $(<:.dia=.eps)

Dia vers SVG (Inkscape)

Côté Inkscape

Inkscape (version 0.46, peut-être avant) sait ouvrir les fichiers *.dia. Le résultat est généralement satisfaisant, mais j'ai rencontré des soucis avec certains textes, qui perdaient leur apparence et avaient un comportement étrange quand je tentais une modification (un texte multi-lignes dans Dia reste un seul bloc de texte dans Inkscape, mais les lignes se « fondent » lorsqu'on supprime les retours chariot… très étrange). Le plus simple est alors de copier le contenu du bloc de texte (sélectionner le bloc, puis Ctrl-x) et de créer un nouvel objet texte (cliquer n'importe où avec l'outil texte) et de coller le texte dedans (Ctrl-v) ; attention, les retours chariots peuvent être supprimés (sans être remplacés par des espaces).

Autre possibilité, on peut exporter en PDF depuis Dia (via EPS, comme vu au paragraphe précédent), puis importer le PDF depuis Inkscape ; les textes conservent alors leur apparence, mais sont convertis en chemins et donc non modifiable via l'outil texte.

Côté Dia

Dia comporte également un export vers différentes variantes du format SVG :

  • Graphique vectoriel Cairo (SVG) (*.svg) : donne a priori le même résultat que la technique « export PDF puis import dans Inkscape » décrite précédemment. À privilégier donc puisqu'on économise l'étape EPS.
  • Scalable Vector Graphics (*.svg) : a priori exactement le même comportement que l'ouverture du fichier Dia depuis Inkscape, avec le même problème sur les textes.
  • SVG plain (*.svg) : les textes multi-lignes dans Dia sont transformés en autant d'objets texte qu'il y a de lignes, mais la modification (ajout de texte notamment) reste toujours aussi problématique. De plus, l'apparence générale du diagramme est moins bien respectée. À déconseiller.
  • SVG compressed (*.svgz) : même chose que le précédent, mais compressé.

En bref

Pour résumer :

  • Le plus simple est d'ouvrir le fichier Dia depuis Inkscape.
  • Si un problème se manifeste et que les textes n'ont pas besoin d'être retouchés, utiliser l'export « Graphique vectoriel Cairo (SVG) » depuis Dia, puis ouvrir le fichier SVG ainsi généré depuis Inkscape.

OpenDocument Spreadsheet (LibreOffice Calc) vers PDF

OpenOffice a toujours permis d'exporter ses documents en PDF. LibreOffice (mais pas OpenOffice) peut à présent convertir des documents en ligne de commande. Voici un exemple pour un document Calc :

localc --nologo --convert-to pdf image.ods

Un fichier image.pdf sera généré dans le répertoire courant (consulter le man pour plus d'options d'exportation). L'option --nologo sert à éviter l'affichage de l'écran de démarrage de LibreOffice.

Vous devez néanmoins prendre garde à deux choses :

  • Définissez bien la taille de la page pour qu'elle corresponde à la taille du tableau à exporter. S'il ne tient pas sur une page, le PDF fera plusieurs pages (ce qui peut être votre but, d'ailleurs).
  • Si une instance de LibreOffice (version 3.4) est lancée, l'exportation ne se fera pas. Espérons que ce problème soit corrigé dans les prochaines versions.

Dans un Makefile :

%.pdf: %.ods
        localc --nologo --convert-to pdf $<

Netbeans UML vers vectoriel (non supporté)

J'utilisais le module UML de Netbeans (version 6.0.1) pour créer mes diagrammes UML, mais il ne sait apparemment exporter qu'en bitmap (PNG). Enfin, il y a bien un export SVG, mais il s'agit en fait d'une image bitmap embarquée dans un SVG, autant dire que je n'ai jamais rien vu de plus stupide !

Si vous avez une méthode pour exporter dans un format vectoriel, faites-moi signe !

Note : je n'ai essayé sur aucune version supérieure à la 6.0.1, peut-être que ça a évolué dans les versions plus récentes.

Logiciels ne posant pas problème

Inkscape

Version 0.46 :

  • L'export « PDF avec la librairie Cairo » fonctionne bien avec les options par défaut (PDF 1.4, Convertir les textes en chemins).
  • L'export EPS fonctionne bien aussi, mais il faut cocher « Créer une boîte englobante autour de la page » pour que la mise en page soit respectée (sinon les objets en dehors de la page apparaîtront et l'image sera redimensionnée).

Version 0.47 :

  • L'option d'export « PDF avec la librairie Cairo » a disparu, mais « Portable Document Format » donne des résultats corrects. Peut-être est-ce juste l'entrée du menu qui a été renommée.

Version 0.48 :

  • L'import PDF fonctionne bien (de mémoire il fonctionnait déjà bien avec les précédentes versions).

XFig

L'export EPS et PDF fonctionne bien (version 3.2.5a).