Question Comment convertir un fichier SVG en PDF sur Linux


Comment puis-je convertir et SVG (contenant quelques mots de texte latin et quelques graphiques vectoriels simples) en format PDF sous Linux?

J'ai essayé Inkscape 0.47 sur Ubuntu Lucid, mais certains sous-graphiques sont déplacés de manière aléatoire, ce qui raccourcit certaines lignes dans le PDF en sortie. Donc, la sortie est inutile, car les graphismes sont complètement différents.

J'ai essayé d'ouvrir le SVG dans Google Chrome 16 et de l'imprimer au format PDF, mais cela déforme toutes les couleurs et supprime également certains éléments. (Le SVG semble bien à l'écran, mais il est déjà mauvais dans l'aperçu avant impression et le fichier PDF généré est également mauvais.)

Je ne veux pas rasteriser ou rendre le SVG. Une solution qui convertit le SVG en une image bitmap et crée ensuite un PDF avec l'image intégrée n'est pas une réponse à ma question. (FYI Inscape 0.47 restitue le texte de manière très laide, sans antialiasing, lors du rendu au format PNG).

Quelles autres options ai-je?


105
2018-01-22 12:17


origine


Si vous ne disposez que de quelques images à convertir, vous trouverez peut-être plus facile d'utiliser certains convertisseurs en ligne. j'ai essayé CloudConvert et il a fait un très bon travail avec la moitié de la taille du fichier SVG. - Frank Breitling


Réponses:


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 rasterise pas le SVG, et il incorpore et sauvegarde les polices (au moins, il a incorporé les caractères utilisés de la police Arial). Parfois, l'incorporation de polices échoue (par exemple, pour la police LMRoman17) et le fichier de polices 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 se rasterise toujours, mais ce n'est pas vrai. Le manuel est simplement obsolète. Parfois, votre outil de génération svg peut partiellement raster l'image svg, ce qui peut également vous induire en erreur.


115
2018-01-22 12:28



C'est beaucoup de dépendances que je vois ici: cairo, libgphoto, gtk3, libsane ... Eh bien, si ça marche ... - ShiDoiSi
Est-ce que cela se convertira en un espace colorimétrique CMJN? - justingordon
@ AyberkÖzgür C'est la faute de inkscape - lorsque vous enregistrez un projet Inkscape, il le sauvegardera par défaut en tant que fichier SVG, mais le fichier SVG qu'il enregistre inclut un ensemble de données non standard spécifiques à inkscape qui peuvent souvent perturber d'autres programmes. Tu dois exportation en tant que SVG plutôt que juste économie en tant que SVG. - AJMansfield
Pourrait gagner du temps à chercher: Sur Suse-Systems, le paquet contenant rsvg-convert est appelé rsvg-view. - Trendfischer
Cela a fonctionné pour moi et la qualité de pdf est identique à svg. Avant cela, il fallait utiliser imagemagick pour convertir en pdf et la qualité était médiocre surtout pour svg. - Pratik Soni


Cela fonctionne sur Ubuntu Lucid:

$ sudo apt-get install inkscape
$ inkscape t.svg --export-pdf=t.pdf

L’invocation Inkscape en ligne de commande ci-dessus fonctionne même en mode sans tête, sans interface graphique (DISPLAY=). Cependant, l'installation d'Inscape installe beaucoup de dépendances, y compris X11.

Veuillez noter que le statut de sortie de Inskscape est toujours 0, même si une erreur survient - alors faites attention à son stderr.

Il y a aussi inkscape --shell, adapté pour convertir de nombreux documents dans un lot. Cela évite le temps de démarrage lent 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 SVG:

$ DISPLAY= inkscape t.svg --export-plain-svg=t.plain.svg

64
2017-11-16 20:23



Malheureusement, cela ne semble pas fonctionner sur OS X. Pourtant, bonne réponse. - Konrad Rudolph
L'OP spécifiait qu'Inkscape avait des bogues de rendu; cela correspond à mon expérience. - Dylan Thurston
Sur OSX utilisant Homebrew, vous pouvez installer Inkscape en utilisant brew install inkscape ces jours-ci. La résultante /usr/local/bin/inkscape travaillé pour moi sans avoir à exécuter X11.app. - Alex Schröder
Inkscape peut être installé sur OS X à partir du dmg distribué sur son propre site Web, puis appelé depuis la ligne de commande après avoir créé deux liens symboliques: ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape et de même pour inkscape-bin (en supposant ~/bin est dans votre $PATH). - Ioannis Filippidis
Vous pouvez utiliser le -z (ou --without-gui) avec Inkscape pour l’exécuter en mode batch uniquement (aucune fenêtre ne s’ouvrira). - Artefact2


J'obtiens de bons résultats en imprimant à partir d'Inkscape (0,47 également) au format PDF et en les sauvegardant au format PDF (mais légèrement différent), mais cela peut dépendre du graphique en main.

Une alternative avec une résolution plus faible (je n'ai pas essayé de changement pour l'améliorer) est

 convert file.svgz file.pdf 

convert fait partie de la ImageMagick paquet. Rasterizer est un autre programme:

 rasterizer -m application/pdf file.svgz -d file.pdf 

Pour savoir quels programmes gèrent svgs sont installés sur votre système, essayez simplement

 apropos -s 1 svg

La page de manuel de ces programmes devrait vous expliquer si le programme est utile pour convertir le svg en pdf.


7
2018-01-22 12:40



Merci pour vos suggestions. FYI convert n'est pas une réponse à la question initiale, car convert rasterise le SVG en une image bitmap, et la question initiale était de chercher une solution qui ne le ferait pas. - pts


https://superuser.com/a/79064/19956 mentionne gsvg, partie de GhostPDL.

J'ai essayé gsvg ghostpdl-9.06 sur Ubuntu Lucid, mais il a échoué pour deux fichiers SVG générés par Inkscape. Un SVG avait du texte, l'autre n'avait que des graphiques vectoriels. Il a également échoué pour les graphiques simples sans extensions Inkscape ou chemin de clip. Donc, je ne considère pas gsvg un convertisseur SVG-to-PDF utilisable.


5
2017-11-16 20:18





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

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

Documentation CairoSVG


5
2017-12-21 06:04



Il existe même des liaisons python que vous pouvez utiliser. Malheureusement, j’ai trouvé que cette méthode était plutôt limitée, c’est-à-dire que de nombreuses fonctionnalités de svg ne sont pas prises en charge. - bodo


Ouvrez le fichier svg avec Image Viewer (Aussi appelé Eye of Gnome eog) et l’imprimer dans un fichier PDF image.pdf) et convertir ce pdf en eps en utilisant pdf2ps commander. Simple!

Étapes élaborées:

  1. Installer Image Viewer si ce n'est pas encore fait (étape hautement improbable si vous utilisez gnome)

    sudo apt-get install eog
    
  2. Ouvrir le fichier svg avec eog et l'imprimer pour image.pdf fichier.

  3. (Facultatif) Supprimez les espaces blancs du fichier pdf:

    pdfcrop image.pdf
    

    Cela va générer image-crop.pdf avec les espaces environnants supprimés.

  4. Convertir les pdf recadrés en eps (utiliser image.pdf directement si vous n'avez pas recadré le pdf)

    pdf2ps image-crop.pdf image.eps
    

C'est tout!


0
2017-11-05 08:23





Sur Mac OS (étant donné que vous avez déjà installé Brew), je fais:

$ brew install cairo libffi python3
$ pip3 install cairosvg

$ cairosvg -o blah.png ./blah.svg 

Same devrait fonctionner sur Linux, mais avec apt-get à la place.


0
2017-07-27 18:56