2017-10-04 5 views
0

Je voudrais convertir cette SVG au format PDF avec la taille réduite jusqu'à x10 de sa taille actuelle sans perdre la qualité de l'image. Le PDF doit également être en 300 PPI. Comment puis-je obtenir un résultat?Redimensionner et l'exportation au format PDF SVG en utilisant ImageMagick

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="248.1" height="350.7" viewBox="0 0 248.1 350.7" xml:space="preserve"> 
<desc>Created with Fabric.js 1.7.19</desc> 
<defs> 
</defs> 
<g transform="translate(51.2 34.1) scale(0.1 0.1)"> 
<image xlink:href="./cat.jpg" x="-512" y="-341" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" width="1024" height="682" preserveAspectRatio="none"></image> 
</g> 
</svg> 

enter image description here

Ce SVG est venu de fabricjs Code toSVG(). Je peux le redimensionner en utilisant fabricjs, mais j'aimerais savoir si c'est possible et comment utiliser ImageMagick.

+0

Cela n'a pas beaucoup de sens. Le SVG n'est rien d'autre qu'une enveloppe autour de votre cat.jpg. Pourquoi ne convertis-tu pas ça en pdf? (ce qui revient à envelopper votre image avec un PDF.) – ccprog

+0

J'essaie juste d'apprendre de nouvelles choses. Mon objectif principal était d'essayer de construire un éditeur d'image où je pourrais mettre beaucoup de photos pour pouvoir l'imprimer comme un livre photo (par exemple: comme mixbook.com) – amree

+0

Alors quel est le rôle du SVG? Tâches de mise en page? – ccprog

Répondre

1

ImageMagick est une suite de programmes destinée aux images raster. Ce que vous avez est un format qui mélange le contenu vectoriel et raster à la fois pour l'entrée et la sortie.

ImageMagick peut gérer, mais uniquement grâce à des programmes supplémentaires qui doivent être installés:

  • importation de SVG avec Inkscape ou librsvg
  • exporter au format PDF avec Ghostscript

Vous pouvez suppression d ' l'intermédiaire. Inkscape, tout en étant principalement une interface graphique de l'éditeur SVG, dispose également d'un mode de ligne de commande, par exemple pour les tâches d'exportation. Vous pouvez faire évoluer le SVG en multipliant les height et width valeurs sur l'élément racine avec votre échelle - ne change pas l'attribut viewBox:

<svg width="2481" height="3507" viewBox="0 0 248.1 350.7" ...> 

Ou, si vous connaissez la taille cible des pages que vous voulez, vous pouvez définissez-les. Même si le format n'est pas adapté, votre contenu sera adapté à la taille de la page. Par exemple, avec une page A4:

<svg width="210mm" height="297mm" viewBox="0 0 248.1 350.7" ...> 

Puis execute Inkscape:

inkscape --without-gui --export-pdf=out.pdf in.svg 

Les photos sont eMbeded en l'état, de sorte que vous ne lâche pas la résolution.

+0

J'ai essayé votre suggestion et cela fonctionne. Merci beaucoup. Donc, fondamentalement, je dois modifier manuellement la largeur et la hauteur du svg, non? Est-ce une manière normale de redimensionner SVG? – amree

+0

Pour un fichier SVG autonome, il peut souvent y avoir un environnement qui peut définir des tailles (comme une page html intégrant le svg en tant qu'image). L'exportation d'Inkscape PDF n'offre pas cette possibilité (bien que ce ne soit pas si compliqué), c'est donc plutôt une solution de remplacement. En fonction de votre flux de travail, il pourrait être une variante de traiter le SVG avec des tailles modifiées en tant que fichier temporaire. – ccprog