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

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

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

Eu tentei o Inkscape 0.47 no Ubuntu Lucid, mas ele move alguns subgráficos aleatoriamente e torna algumas linhas mais curtas no PDF de saída. Portanto, sua saída é inútil, porque os gráficos parecem completamente diferentes.

Tentei abrir o SVG no Google Chrome 16 e imprimir em PDF, mas 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 está ruim)

Não quero rasterizar ou renderizar o SVG. Uma solução que converte o SVG em uma imagem bitmap e depois cria um PDF com a imagem incorporada não é uma resposta à minha pergunta. (Para sua informação, o Inscape 0.47 renderiza o texto de uma maneira muito feia, sem antialiasing, ao renderizar para PNG)

Qexistem outras opções?

Responder1

conversão rsvgfiz 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 pdfnão rasteriza o SVG e incorpora e subdivide fontes (pelo menos incorporou os caracteres usados ​​​​da fonte Arial). Às vezes, a incorporação da fonte falha (por exemplo, para a fonte LMRoman17) e todo o arquivo da fonte é copiado para o PDF gerado.

Dependências do 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.

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

Responder2

Isso funciona no Ubuntu Lucid:

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

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

Observe que o status de saída do Inskscape é sempre 0, mesmo se ocorrer um erro - portanto, esteja atento ao seu stderr.

Existe também o inkscape --shell, adequado para converter muitos documentos em lote. Isso evita o tempo lento de inicialização 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

Responder3

Usei CairoSVG com sucesso no OSX e no Ubuntu.

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

Documentação CairoSVG

Responder4

Obtenho bons resultados ao imprimir do Inkscape (0,47 também) para PDF e ao salvar como PDF (mas um pouco diferente), mas isso pode depender do gráfico em questão.

Uma alternativa com resolução mais baixa (não tentei nenhuma opção para melhorá-la) é

 convert file.svgz file.pdf 

convertfaz parte do ImageMagickpacote. Rasterizer é outro programa:

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

Para descobrir quais programas que lidam com svgs estão instalados em seu sistema, tente

 apropos -s 1 svg

A página de manual desses programas deve explicar se o programa é útil para converter SVG em PDF.

informação relacionada