¿Cómo convierto un SVG a PDF en Linux?

¿Cómo convierto un SVG a PDF en Linux?

¿Cómo convierto un SVG (que contiene algunas palabras de texto en latín y algunos gráficos vectoriales simples) a un PDF en Linux?

Probé Inkscape 0.47 en Ubuntu Lucid, pero mueve algunos subgráficos de forma aleatoria y acorta algunas líneas en el PDF de salida. Entonces su salida es inútil, porque los gráficos se ven completamente diferentes.

Intenté abrir el SVG en Google Chrome 16 e imprimirlo en PDF, pero distorsiona todos los colores y también elimina algunos elementos. (El SVG aparece bien en la pantalla, pero ya está mal en la vista previa de impresión y el PDF generado también está mal)

No quiero rasterizar ni renderizar el SVG. Una solución que convierte el SVG en una imagen de mapa de bits y luego crea un PDF con la imagen incrustada no es una respuesta a mi pregunta. (Para su información, Inscape 0.47 renderiza el texto de una manera muy fea, sin antialiasing, cuando se renderiza en PNG)

¿Hay otras opciones?

Respuesta1

convertir-rsvgHice el truco para el SVG que quería convertir:

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

rsvg-convert -f pdfno rasteriza el SVG e incrusta y subconjuntos de fuentes (al menos tiene incrustados los caracteres usados ​​de la fuente Arial). A veces falla la incrustación de fuentes (por ejemplo, para la fuente LMRoman17) y todo el archivo de fuente se copia al PDF generado.

Dependencias de 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

De forma predeterminada, libcairo necesita libX11, por lo que rsvg-convert puede ser difícil de instalar en un sistema sin cabeza.

Nota: La página de manual de rsvg-convertindica que la herramienta siempre rasteriza, pero esto no es cierto. El manual está simplemente obsoleto. A veces, su herramienta de generación de svg puede rasterizar parcialmente la imagen svg, lo que también puede engañarlo.

Respuesta2

Esto funciona en Ubuntu Lucid:

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

La invocación de Inkscape desde la línea de comandos anterior funciona incluso en modo sin cabeza, sin una GUI ( DISPLAY=). Sin embargo, la instalación de Inscape instala muchas dependencias, incluido X11.

Tenga en cuenta que el estado de salida de Inskscape es siempre 0, incluso si ocurre un error, así que tenga cuidado con su stderr.

También existe uno inkscape --shelladecuado para convertir muchos documentos en un lote. Esto evita el lento tiempo de inicio de Inkscape para cada archivo:

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

Inkscape también es útil para simplificar un SVG:

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

Respuesta3

He utilizado CairoSVG con éxito en OSX y Ubuntu.

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

Documentación CairoSVG

Respuesta4

Obtengo buenos resultados al imprimir desde Inkscape (0.47 también) a PDF y al guardarlo como PDF (pero ligeramente diferente), pero esto puede depender del gráfico en cuestión.

Una alternativa con menor resolución (no probé ningún cambio para mejorarla) es

 convert file.svgz file.pdf 

convertes parte del ImageMagickpaquete. Rasterizer es otro programa:

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

Para saber qué programas que manejan archivos SVG están instalados en su sistema, simplemente intente

 apropos -s 1 svg

La página de manual de estos programas debe explicar si el programa es útil para convertir svg a pdf.

información relacionada