¿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 pdf
no 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-convert
indica 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 --shell
adecuado 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
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
convert
es parte del ImageMagick
paquete. 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.