ferramenta de linha de comando linux gratuita para converter SVG para PDF e / ou algum formato de bitmap comumente usado?

17

Existe uma ferramenta de linha de comando do linux gratuita para converter SVG para PDF e / ou algum formato de bitmap comumente usado (por exemplo, PNG)?


fonte
2
mogrify -format pdf -- *.svg
Yogirg

Respostas:

25

O Imagemagick é ótimo quando a saída rasterizada (pixelizada) é o que você deseja (ou é pelo menos aceitável), mas é uma má escolha, pois, de fato, incorpora no pdf uma versão rasterizada do que você está tentando converter. O ponto principal do svg / pdf é que ele pode ser vetorizado, portanto menor em tamanho, mantendo-se suave em qualquer resolução.

Portanto, eu recomendaria definitivamente o Inkscape ou o CarioSVG . Este último possui vários utilitários de linha de comando precisamente para esse fim ( svg2pdf, svg2pse svg2png). O único problema é que é basicamente apenas um ovo python, portanto, se você não tem um ambiente python configurado e não é experiente o suficiente (ou não se importa o suficiente) para configurar um, então essa opção é um não ir. Eu tentei a mim mesmo, mas tive problemas para configurar o necessário libcairo(não que eu tentei muito ).

O Inkscape é incrível, mas o CLI é um pouco desajeitado se você quiser apenas um pequeno comando rápido para fazer todo o trabalho para você. Eu montei alguns pequenos scripts para cuidar de tudo isso para mim:

svg2pdf

#!/bin/bash

for i in $@; do
  inkscape --without-gui --export-pdf="$(basename $i .svg).pdf" $i
done

svg2png

#!/bin/bash

for i in $@; do
  inkscape --without-gui --export-png="$(basename $i .svg).png" $i
done

Coloque o primeiro ~/bin/svg2pdfe o segundo ~/bin/svg2png, execute os chmod +xdois para torná-los executáveis ​​e bum! Você tem um atalho rápido e fácil para essas operações frequentemente desejadas que não exigem que você pense ou se lembre de como a CLI do Inkscape funciona. (Obviamente, você precisa do Inkscape instalado antes que isso funcione)

metasoarous
fonte
Fiz apenas um teste de desempenho rápido com o imagemagick e o inkscape com geração de dez pdfs e o imagemagick é 5,77 vezes mais rápido. time for i in {1..10}; do time inkscape --without-gui -f "drawing.svg" --export-pdf="drawing$i.pdf"; done;real 0m2.192s time for i in {1..10}; do convert drawing.svg drawing$i$i$i.pdf; done;real 0m0.381s
6
Pode ser mais rápido, mas você está perdendo a natureza vetorial do gráfico, portanto provavelmente também é 10 vezes maior (embora eu adoraria que você me corrija se estiver errado). O motivo de levar mais tempo é porque ele está fazendo manipulações vetoriais reais, o que é muito mais complexo que a rasterização (que é basicamente equivalente à renderização).
metasoário
7

Existe o Image Magick , e o Inkscape também possui ferramentas de linha de comando.

Erika
fonte
3
convertvitórias de longe. É até capaz de converter de e para formatos esotéricos que você nem sabia que existiam e aplicar mais efeitos a eles do que você precisará.
new123456
3
Apenas para esclarecer para leitores desconhecidos, converté uma ferramenta de linha de comando para o ImageMagick.
Erika
2
e mais um esclarecimento: se você usar o convert, alternará de vetor para raster e perderá a capacidade de dimensionar a imagem. no meu livro, é o inkscape que vence. depende apenas do que você precisa.
Nsheff 21/07
0

como eu sei, existe uma maneira de operar o Inkscape via cmd - eu já usei algo semelhante para miniaturas PNG de exportação em lote da minha enorme coleção SVG. Como o Inkscape também suporta exportação de PDF via Cairo, também deve ser possível exportar PDF. Eu perguntaria em algum fórum do Inkscape. :-)

Juhele
fonte