Questão Como faço para converter um SVG em um PDF no Linux


Como faço para converter e SVG (contendo algumas palavras de texto latino e alguns gráficos vetoriais simples) para um PDF no Linux?

Eu tentei o Inkscape 0.47 no Ubuntu Lucid, mas ele move alguns sub-gráficos aleatoriamente, e faz algumas linhas menores no PDF de saída. Portanto, a saída é inútil, porque os gráficos parecem completamente diferentes.

Eu tentei abrir o SVG no Google Chrome 16 e imprimi-lo em PDF, mas ele distorce todas as cores e também remove alguns elementos. (O SVG aparece bem na tela, mas já está ruim na visualização da impressão e o PDF gerado também é ruim.)

Eu não quero rasterizar ou renderizar o SVG. Uma solução que converta o SVG em uma imagem de bitmap e, em seguida, crie um PDF com a imagem incorporada não é uma resposta à minha pergunta. (O FYI Inscape 0.47 renderiza o texto de uma maneira muito feia, sem antialiasing, ao renderizar para PNG.)

Quais outras opções eu tenho?


105


origem


Se você tiver apenas algumas imagens para converter, talvez seja mais fácil usar alguns dos conversores on-line. eu tentei CloudConvert e fez um trabalho muito bom com metade do tamanho do arquivo do SVG. - Frank Breitling


Respostas:


rsvg-convert fiz o truque para o SVG que eu queria converter:

$ sudo apt-get install librsvg2-bin
$ rsvg-convert -f pdf -o t.pdf t.svg

rsvg-convert -f pdf não rasteriza o SVG e incorpora e subconjunto fontes (pelo menos, incorporou os caracteres usados ​​da fonte Arial). Às vezes, a incorporação de fontes falha (por exemplo, para a fonte LMRoman17) e todo o arquivo de fonte é copiado para o PDF gerado.

Dependências no 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

Por padrão, o libcairo precisa do libX11, então o rsvg-convert pode ser difícil de instalar em um sistema headless.

Nota: A página do homem de rsvg-convert afirma que a ferramenta sempre rasteriza, mas isso não é verdade. O manual é simplesmente obsoleto. Às vezes, sua ferramenta de geração de svg pode parcialmente rasterizar a imagem svg, o que também pode enganar você.


114



São muitas dependências que estou vendo aqui: cairo, libgphoto, gtk3, libsane ... Ah bem, se faz o trabalho ... - ShiDoiSi
Isso vai se converter em um espaço de cores cmyk? - justingordon
@ AyberkÖzgür Isso é culpa do inkscape - quando você salva um projeto do Inkscape, ele salvará por padrão como um SVG, mas o SVG que ele salva inclui um monte de dados específicos do inkscape que não são padrão e que podem atrapalhar freqüentemente outros programas. Você precisa exportar como um SVG em vez de apenas salvar como um SVG. - AJMansfield
Pode economizar um pouco de tempo procurando: No Suse-Systems, o pacote contendo rsvg-convert é chamado rsvg-view. - Trendfischer
Funcionou para mim e a qualidade do pdf é a mesma do svg. Antes disso, estava usando o imagemagick para converter em pdf e a qualidade era ruim, especialmente para o svg. - Pratik Soni


Isso funciona no Ubuntu Lucid:

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

A invocação do Inkscape da linha de comandos acima funciona mesmo no modo sem cabeça, sem uma GUI (DISPLAY=). No entanto, a instalação do Inscape instala muitas dependências, incluindo o X11.

Por favor, note que o status de saída do Inskscape é sempre 0, mesmo que ocorra um erro - por isso fique atento ao stderr.

Há também inkscape --shell, adequado para converter muitos documentos em um lote. Isso evita o tempo de inicialização lento do Inkscape para cada arquivo:

$ (echo t.svg --export-pdf=t.pdf;
   echo u.svg --export-pdf=u.pdf) |
  DISPLAY= inkscape --shell

O Inkscape também é útil para simplificar um SVG:

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

63



Infelizmente, isso não parece funcionar no OS X. Ainda assim, boa resposta. - Konrad Rudolph
O OP especificou que o Inkscape tinha erros de renderização; isso corresponde à minha experiência. - Dylan Thurston
No OSX usando Homebrew, você pode instalar o Inkscape usando brew install inkscape nos dias de hoje. O resultado /usr/local/bin/inkscape funcionou para mim sem ter que executar o X11.app. - Alex Schröder
O Inkscape pode ser instalado no OS X a partir do dmg distribuído em seu próprio site e, em seguida, chamado a partir da linha de comando depois de criar dois links simbólicos: ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape e da mesma forma para inkscape-bin (assumindo ~/bin está no seu $PATH). - Ioannis Filippidis
Você pode usar o -z (ou --without-gui) sinalizar com o Inkscape para executá-lo somente no modo batch (nenhuma janela será aberta). - Artefact2


Eu obtive bons resultados de impressão do Inkscape (0.47 também) para PDF e para salvar como PDF (mas ligeiramente diferente), mas isso pode depender do gráfico em mãos.

Uma alternativa com resolução mais baixa (não tentei nenhum comutador para melhorá-lo) é

 convert file.svgz file.pdf 

convert faz parte do ImageMagick pacote. Rasterizador é outro programa:

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

Para descobrir, quais programas que manipulam svgs estão instalados em seu sistema, apenas tente

 apropos -s 1 svg

A manpage para estes programas deve explicar, se o programa é útil para converter o svg para pdf.


7



Obrigado por suas sugestões. Para sua informação convert não é uma resposta à pergunta original, porque convert rasteriza o SVG para uma imagem de bitmap, e a pergunta original estava procurando por uma solução que não faz isso. - pts


https://superuser.com/a/79064/19956 menções gsvg, parte do GhostPDL.

Eu tentei gsvg ghostpdl-9.06 no Ubuntu Lucid, mas falhou por dois SVGs gerados pelo Inkscape. Um SVG tinha texto, o outro tinha apenas gráficos vetoriais. Ele também falhou em gráficos simples sem as extensões do Inkscape ou o caminho do clipe. Então eu não considero o gsvg um conversor usável de SVG para PDF.


5





Eu usei o CairoSVG com sucesso no OSX e no Ubuntu.

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

Documentação CairoSVG


5



Há até mesmo ligações em python que você pode usar. Infelizmente, descobri que esse método é bastante limitado, ou seja, muitos recursos svg não são suportados. - bodo


Abra o arquivo svg com Image Viewer (Também chamado Eye of Gnome eog) e imprimi-lo em um arquivo PDF (digamos image.pdf) e converter esse pdf para eps usando pdf2ps comando. Simples!

Etapas elaboradas:

  1. Instalar Image Viewer se ainda não foi feito (etapa altamente improvável se você usar gnome)

    sudo apt-get install eog
    
  2. Abra o arquivo svg com eog e imprimi-lo para image.pdf Arquivo.

  3. (Opcional) Remova o espaço em branco do arquivo pdf:

    pdfcrop image.pdf
    

    Isso irá gerar image-crop.pdf com o espaço em branco circundante removido.

  4. Converter pdf recortado para eps (use image.pdf diretamente se você não cortou o pdf)

    pdf2ps image-crop.pdf image.eps
    

É isso aí!


0





No Mac OS (considerando que você já tem o brew instalado) eu faço:

$ brew install cairo libffi python3
$ pip3 install cairosvg

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

O mesmo deve funcionar no Linux, mas com o apt-get.


0