Comment convertir un fichier SVG en un PDF sur Linux
Comment convertir un fichier SVG (contenant quelques mots de texte latin et quelques images vectorielles simples) en un fichier PDF sous Linux?
J'ai essayé Inkscape 0.47 sur Ubuntu Lucid, mais cela déplace certains sous-graphiques de manière aléatoire et rend certaines lignes plus courtes dans le fichier PDF de sortie. La sortie est donc inutile, car les graphismes sont complètement différents.
J'ai essayé d'ouvrir SVG dans Google Chrome 16 et de l'imprimer au format PDF, mais il déforme toutes les couleurs et élimine également certains éléments. (Le format SVG apparaît bien à l'écran, mais il est déjà incorrect dans l'aperçu avant impression et le PDF généré est également incorrect.)
Je ne veux pas rasteriser ou rendre le SVG. Une solution qui convertit le SVG en une image bitmap, puis crée un PDF avec l’image incorporée n’est pas une réponse à ma question. (Pour votre information, Inscape 0.47 rend le texte très mal, sans antialiasing, lors du rendu au format PNG.)
Quelles autres options ai-je?
rsvg-convert a fait le tour pour le SVG que je voulais convertir:
$ Sudo apt-get install librsvg2-bin
$ rsvg-convert -f pdf -o t.pdf t.svg
rsvg-convert -f pdf
ne pixellise pas le SVG, il incorpore et sous-définit les polices (du moins, il a incorporé les caractères utilisés de la police Arial). Parfois, l'incorporation de la police échoue (par exemple, pour la police LMRoman17) et le fichier de police entier est copié dans le fichier PDF généré.
Dépendances sur Ubuntu Lucid:
- libcairo.so.2
- libgobject-2.0.so.0
- libgthread-2.0.so.0
- libglib-2.0.so.0
- librsvg-2.so.2
- libpthread.so.0
- libc.so.6
Par défaut, libcairo a besoin de libX11, de sorte que rsvg-convert peut être difficile à installer sur un système sans tête.
Remarque: La page de manuel de rsvg-convert
indique que l'outil rasterise toujours, mais ce n'est pas vrai. Le manuel est simplement obsolète. Parfois, votre outil de génération de svg peut pixelliser partiellement l'image svg, ce qui peut également vous induire en erreur.
Cela fonctionne sur Ubuntu Lucid:
$ Sudo apt-get install inkscape
$ inkscape t.svg --export-pdf=t.pdf
L'invocation Inkscape ci-dessus en ligne de commande fonctionne même en mode sans interface graphique, sans interface graphique (DISPLAY=
). Toutefois, l’installation d’Inscape installe de nombreuses dépendances, notamment X11.
Veuillez noter que le statut de sortie d'Inskscape est toujours égal à 0, même en cas d'erreur. Veillez donc à conserver son statut.
Il existe également inkscape --Shell
, adapté à la conversion de nombreux documents dans un lot. Cela évite la lenteur du démarrage d'Inkscape pour chaque fichier:
$ (echo t.svg --export-pdf=t.pdf;
echo u.svg --export-pdf=u.pdf) |
DISPLAY= inkscape --Shell
Inkscape est également utile pour simplifier un fichier SVG:
$ DISPLAY= inkscape t.svg --export-plain-svg=t.plain.svg
Les résultats obtenus avec Inkscape (0.47 également) en PDF donnent de bons résultats, ainsi que pour l’enregistrement au format PDF (mais légèrement différent), mais cela peut dépendre du graphique à portée de main.
Une alternative avec une résolution plus faible (je n’ai essayé d’aucune option pour l’améliorer) est la suivante:
convert file.svgz file.pdf
convert
fait partie du package ImageMagick
. Rasterizer est un autre programme:
rasterizer -m application/pdf file.svgz -d file.pdf
Pour savoir quels programmes qui gèrent les svgs sont installés sur votre système, essayez juste
apropos -s 1 svg
La page de manuel de ces programmes devrait expliquer si le programme est utile pour convertir le svg en pdf.
J'ai utilisé CairoSVG avec succès sur OSX et Ubuntu.
pip install cairosvg
cairosvg in.svg -o out.pdf
https://superuser.com/a/79064/19956 mentions gsvg , composant de GhostPDL.
J'ai essayé gsvg ghostpdl-9.06 sur Ubuntu Lucid, mais cela a échoué pour deux fichiers SVG générés par Inkscape. Un fichier SVG contenait du texte, l’autre ne contenait que des graphiques vectoriels. Il a également échoué pour les graphiques simples sans extensions Inkscape ni chemin de clip. Donc, je ne considère pas que gsvg soit un convertisseur SVG en PDF utilisable.
Sur Mac OS (étant donné que vous avez déjà installé la bière), je fais:
$ brew install cairo libffi python3
$ pip3 install cairosvg
$ cairosvg -o blah.pdf ./blah.svg
Même chose devrait fonctionner sous Linux, mais avec apt-get à la place.
Ouvrez le fichier svg avec Image Viewer
(appelé également Eye of Gnome eog
) et imprimez-le dans un fichier PDF (par exemple, image.pdf
) et convertissez-le en eps à l'aide de la commande pdf2ps
. Simple!
Étapes élaborées:
Installez
Image Viewer
si ce n'est déjà fait (étape hautement improbable si vous utilisezgnome
)Sudo apt-get install eog
Ouvrez le fichier svg avec
eog
et imprimez-le dans le fichierimage.pdf
.(Facultatif) Supprimez les espaces blancs environnants du fichier pdf:
pdfcrop image.pdf
Cela générera
image-crop.pdf
avec les espaces blancs supprimés.Convertissez un fichier PDF tronqué en eps (utilisez
image.pdf
directement si vous n'avez pas tronqué le fichier PDF)pdf2ps image-crop.pdf image.eps
C'est tout!