2012-06-25 9 views
9

Estoy desarrollando algunos scripts para generar archivos SVG y me pregunto qué buenos renderizadores SVG existen para Linux. Sé que Firefox/Chrome proporciona compatibilidad SVG (y tengo la sensación de que Chrome es más rápido en el renderizado) pero tal vez haya otros renderizadores SVG independientes que me estoy perdiendo. Soy consciente de la existencia de pySVG.¿Buen renderizador SVG para Linux?

Creo que es suficiente cubrir la especificación de SVG 1.1 tanto como sea posible. La razón por la que prefiero una biblioteca independiente es que mi flujo de trabajo es más rápido, ya que no tengo que presionar F5 cada vez.

+2

"bueno" es bastante subjetivo, le sugiero que actualice la pregunta indicando sus requisitos, qué funciones de svg necesita, cómo necesita usar la biblioteca, etc. –

+0

¿Quiere decir un renderizador de pantalla, o un PDF/renderizador de bitmap? ¿Alguna preferencia de lenguaje de programación? – halfer

+0

Sí, un renderizador de pantalla para crear imágenes ráster típicas a partir de una definición estándar de SVG. En cuanto a la preferencia de idioma, estoy usando Python para generar el SVG, pero no estoy vinculado a ningún idioma para la parte de SVG. – rubenafo

Respuesta

3

El SVG 1.1 exportado por la herramienta draw.io es demasiado "moderno" para la correcta representación por Batik, Cairo, qiv, o incluso Firefox: parece que ninguno de ellos admite el elemento < foreignObject>. Sin embargo, WebKit lo procesa correctamente, así que para convertir SVG a imágenes de alta calidad, utilizo las herramientas "wkhtmlto ..." de http://wkhtmltopdf.org.

wkhtmltoimage genera salida a la resolución de pantalla y su --zoom cambia las líneas escamadas y el texto de forma diferente dando como resultado el recorte (aunque se abre el mismo SVG en Chrome y el zoom se realiza correctamente). Así que en vez estoy usando wkhtmltopdf para generar un pdf intermedia y luego haciendo que una imagen de alta resolución con Ghostscript como:

wkhtmltopdf callbacks.svg callbacks.pdf 
gs -sDEVICE=pnggray -sOutputFile=callbacks.png -dBATCH -dNOPAUSE -r900 callbacks.pdf 

EDIT: una desventaja de ir a través de una descripción de página formato es que el archivo de imagen producida puede tener fronteras muy grandes. Puede experimentar con tamaños de papel y diseños para minimizar esto o simplemente cortarlos automáticamente, p. Ej. con ImageMagick:

convert callbacks.png -trim callbacks.png 

EDIT: Firefox 49.0.2 (noviembre de 2016) ahora hace que el SVG draw.io correctamente. No ha vuelto a probar Cairo o Batik. sample draw.io file

+0

Cambié a ImageMagick hace unos meses. Encontré la calidad de los pngs que produce más altos que los generados usando Cairo. E incluso se da cuenta de las extensiones de entrada/salida directamente sin parámetros adicionales. – rubenafo

+0

@figurebelow - He adjuntado una muestra de exportación de draw.io: para mí esto todavía aparece con "No compatible con el visor" a través de ImageMagick, pero ahora funciona en FireFox. ¿Funciona con tu configuración? –

+0

Estás culpando a Batik por algo que no es su culpa. Batik es un procesador SVG. Si incluye HTML en un elemento '', no es responsabilidad de Batik representarlo. Solo debe esperar que HTML se represente en un motor diseñado para HTML, como un navegador. El Cairo no es un procesador SVG, así que tampoco sé por qué lo incluyó. –

6

Apache Batik es una muy buena colección de bibliotecas/programas con soporte para una gran parte de la especificación SVG. Incluye un visor/editor autónomo y un rasterizador de línea de comando que puede convertir archivos SVG a formatos de imagen raster.

+0

Finalmente sigo con Batik. Se puede ejecutar desde la línea de comandos con un simple script y parece tener un buen soporte de SVG y desarrollo activo. ¡Gracias! – rubenafo

+0

## Actualización de noviembre de 2016 ## Después de un tiempo me mudé a Chrome como renderizador SVG. Firefox también hace un buen trabajo, pero creo que Chrome es mucho más rápido. IExplorer es una alternativa decente y, sorprendentemente, viene con un exportador nativo de PNG que también es bastante bueno. – rubenafo

2

Qt SVG está a solo 2 clics de distancia, si instala Qt 4.7 y selecciona el proyecto de muestra instalado localmente svgviewer. Sólo generar y ejecutar para obtener una ventana gráfica animada:

enter image description here

2

recomiendo WebKitGTK. Este es el renderizador que se usa para alimentar Safari, Chrome y otros navegadores. Es compatible con la representación de SVG y HTML.

Solo apt-get install libwebkitgt-3.0-0. Puede probarlo ejecutando /usr/lib/webkitgtk-3.0-0/libexec/GtkLauncher.

A continuación, puede utilizar cualquier idioma/fijaciones te gusta para construir una interfaz gráfica de usuario en todo el renderizador SVG, incluyendo enlaces de Gtk de Python: http://www.aclevername.com/articles/python-webgui/

Aquí hay otro buen artículo sobre la construcción de interfaces de usuario de escritorio usando Webkit y PyGTK fijaciones: http://arstechnica.com/information-technology/2009/07/how-to-build-a-desktop-wysiwyg-editor-with-webkit-and-html-5/

+0

¿De dónde viene '/ usr/lib/webkitgtk-3.0-0/libexec/GtkLauncher'? Tengo 'libwebkitgtk-3.0-0' instalado, pero no existe tal cosa. – Hibou57

4

Puede probar la aplicación de línea de comandos qiv con las banderas -m -T.

+0

qiv se ve genial. –

+0

qiv funciona muy bien, pero prefiero sin banderas con imágenes pequeñas. – b3h3m0th

Cuestiones relacionadas