web-dev-qa-db-fra.com

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?

118
pts

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.

126
pts

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
73
pts

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.

7
user unknown

J'ai utilisé CairoSVG avec succès sur OSX et Ubuntu.

pip install cairosvg
cairosvg in.svg -o out.pdf

CairoSVG Documentation

6
SYK

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.

5
pts

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.

2
Adriel Jr

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:

  1. Installez Image Viewer si ce n'est déjà fait (étape hautement improbable si vous utilisez gnome)

    Sudo apt-get install eog
    
  2. Ouvrez le fichier svg avec eog et imprimez-le dans le fichier image.pdf.

  3. (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.

  4. 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!

0
codeman48