2012-10-11 51 views
9

Me pregunto si hay alguna herramienta de línea de comandos disponible para aplanar grupos anidados con transformaciones en un SVG?Herramienta para aplanar las transformaciones SVG anidadas

En mi caso particular, estoy convirtiendo un PDF de software CAD producido a SVG y luego agrego algunos elementos y publicando el SVG modificado en una página web para su visualización. El tiempo de respuesta del SVG es muy lento (para panoramizar y hacer zoom) y descubrí que se debe a una gran cantidad de grupos anidados dentro del SVG, a menudo hasta varios cientos de profundidad. Para cada elemento en el SVG, el navegador necesita calcular la posición en todos sus nodos principales ...

Obviamente esto es ridículo, ya que todos estos elementos necesitan una sola transformación (matriz). Así que me pregunto si alguien sabe de una herramienta para aplanar esto (o una implementación de C# o Delphi que lo haría ...).

+0

¿Alguna vez encontró una solución decente para esto? –

+0

@TomHall: Excepto por PStill, no hay solución. Creo que puede ser demasiado complejo para cualquier código convertir muchas polilíneas (caminos) en formas más simples. – Optavius

+0

La mejor opción que he encontrado hasta ahora es usar la opción "Acoplar campos de formulario" en Adobe PDF al guardarlo como "PDF optimizado" (es parte de "Descartar objetos"). Esto al menos elimina la anidación, incluso si no reduce necesariamente la cantidad de objetos. – Optavius

Respuesta

0

Puede ir con SVG Cleaner. Desafortunadamente es una herramienta de GUI, por lo que no se ajusta a sus requisitos, pero ofrece una filosofía de procesamiento por lotes que podría ser útil.

+1

Desafortunadamente, el limpiador SVG no llega tan lejos. Realmente me gustaría que hubiera alguna herramienta lista para aplanar todo este sinsentido como '< ruta d = "m0,841.61h5.67" /> ...' –

1

Gracias Delapouite,

por su parte me pareció que éste: (PStill). Hace un trabajo perfecto de allanar la estructura (PDF a PDF), pero el SVG resultante todavía tiene muchos elementos que lo hacen bastante inutilizable para un navegador. Realmente es el problema de lo que los sistemas CAD producen en PDF: muchos caminos muy pequeños en lugar de uno más largo. Estoy bastante seguro de que aún hay espacio para la optimización ... un día :-)

0

Hay una opción para aplanar las transformaciones en Inkscape Graphics Editor.
Para que pueda usar los comandos del terminal de Inkscape para lograrlo, tendrá que buscar si existe dicho comando.

+1

Inkscape parece hacer el trabajo (al menos en la GUI) por lo que puedo ver, pero es una función muy limitada: Necesito seleccionar todos los objetos, luego desagruparlos, luego volver a seleccionarlos y desagruparlos, y repítalo hasta que esté seguro de que no hay más grupos para desagrupar. Cada vez que esto toma un cierto tiempo de procesamiento, entonces se convierte en un proceso bastante tedioso. – Optavius

5

Lo mejor que he encontrado es svgo https://github.com/svg/svgo Pero todavía no es satisfactorio. El objetivo de SVGO es producir un archivo svg más pequeño. Eso significa que si una transformación permite un archivo svg más pequeño, se guarda. Mis propósitos son similares a los de OP pero ligeramente diferentes. Estoy buscando algo que pueda aplanar y simplificar por completo el SVG a solo los elementos básicos &.

+0

https://jakearchibald.github.io/svgomg/ built on svgo permite esto - intente transformar ' xmlns ' – Ruskin

+0

consigo' < ruta d = "M0 204h90" stroke = "# 0f0" /> '... tan posible a través de la línea de comando SVGO. – Ruskin

-1

Soy nuevo en Inkscape, pero viejo para GIMP.

Observo que Inkscape tiene una carpeta de "extensiones", dentro de la cual se encuentran los programas de Python.

Sospecho que Inkscape tiene una funcionalidad similar (aunque no fue obvio de inmediato en la Ayuda) para GIMP al permitir a los usuarios escribir sus propias extensiones personalizadas. En GIMP, los scripts más simples simplemente automatizan los pasos manuales que los usuarios eligen de los menús en uno de sus flujos de trabajo.

Sin embargo, es posible un procesamiento más sofisticado que el que se ofrece en los menús.

Cuestiones relacionadas