Como eu converto um SVG em um PDF no Linux

108

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

Eu experimentei 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. Então, 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 pré-visualizaçã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?

    
por pts 22.01.2012 / 13:17

7 respostas

118

rsvg-convert fez 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 subdivide 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 manual de rsvg-convert indica que a ferramenta sempre rasteriza, mas isso não é verdade. O manual é simplesmente obsoleto. Às vezes, sua ferramenta geradora de svg pode parcialmente rasterizar a imagem svg, o que também pode enganá-lo.

    
por 22.01.2012 / 13:28
66

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 vários 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
    
por 16.11.2012 / 21:23
7

Eu recebo bons resultados de impressão do Inkscape (também 0.47) 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 pacote ImageMagick . 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, quer o programa seja útil para converter o svg para pdf.

    
por 22.01.2012 / 13:40
5

link menciona gsvg , parte do GhostPDL.

Eu tentei o gsvg ghostpdl-9.06 no Ubuntu Lucid, mas ele 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.

    
por 16.11.2012 / 21:18
5

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

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

Documentação do CairoSVG

    
por 21.12.2014 / 07:04
1

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.pdf ./blah.svg 

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

    
por 27.07.2018 / 20:56
0

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

Etapas elaboradas:

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

    sudo apt-get install eog
    
  2. Abra o arquivo svg com eog e imprima-o no arquivo image.pdf .

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

    pdfcrop image.pdf
    

    Isso gerará image-crop.pdf com o espaço em branco ao redor removido.

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

    pdf2ps image-crop.pdf image.eps
    

É isso!

    
por 05.11.2017 / 09:23