Una herramienta de línea de comandos para simplificar archivos SVG

¿Cómo puedo simplificar los archivos SVG (todas las rutas dentro de él) usando una herramienta de línea de comandos de Windows? Es importante que sea rápido porque debería usarlo en producción.
Adobe Illustrator tiene un buen simplificador (Objeto->Ruta->Simplificar) pero no se puede usar como CLI. https://github.com/mourner/simplify-js es otra buena herramienta pero no tiene CLI.
Comente debajo de esta pregunta si conoce alguna herramienta que no sea CLI (en cualquier idioma, incluidos C++ y Python) que funcione directamente con archivos SVG.

Su última oración debe ser una pregunta separada (no haga dos preguntas en una en los sitios de SE). Puede hacer que ambas preguntas se apunten entre sí para enfatizar que desea una herramienta CLI en una y una biblioteca en la otra.
Si puede codificar, sería simple escribir un script con AutoIt para automatizar Adobe Illustrator para hacer esto para tantos archivos como desee.

Respuestas (4)

Puede instalar node.js y usar JavaScript de línea de comando junto con SVG Optimizer (SVGO) para optimizar archivos de gráficos vectoriales SVG.

No pude encontrar ninguna herramienta para simplificar las rutas SVG en SVGO. ¿Estás seguro de que hace eso?

Scour es una herramienta de Python que elimina datos redundantes y espurios de archivos SVG y luego los optimiza.

Instalar

Si está en Debian, puede instalarlo escribiendo este comando:

sudo apt install scour

En la mayoría de las plataformas se puede instalar con:

pip install scour

Si sus permisos actuales no son suficientes, puede usar:

pip install --user scour

o

sudo pip install scour

Uso

Estándar:

scour -i input.svg -o output.svg

Mejor (para versiones anteriores de Internet Explorer) :

scour -i input.svg -o output.svg --enable-viewboxing

Fregado máximo:

scour -i input.svg -o output.svg --enable-viewboxing --enable-id-stripping \
  --enable-comment-stripping --shorten-ids --indent=none

Limpieza máxima y un archivo SVGZ comprimido:

scour -i input.svg -o output.svgz --enable-viewboxing --enable-id-stripping \
  --enable-comment-stripping --shorten-ids --indent=none

Tenga en cuenta que Scour es una biblioteca de python que también proporciona una herramienta de línea de comandos mediante la utilización de puntos de entrada, por lo que requerirá un python que funcione (instalación 2.7 o 3.4+); es multiplataforma.

No pude encontrar ninguna herramienta para simplificar las rutas SVG en Scour. ¿Estás seguro de que hace eso?
@J.Mando sí, estoy razonablemente seguro de que no optimiza lo mismo que simplifica los archivos svg; según el origen del archivo y las opciones seleccionadas, el guardado puede ser bastante significativo.
No estoy buscando optimización. Por favor, lea la pregunta.
@J.Mando Aclare lo que quiere decir con simplificar , la mayoría de las optimizaciones también son simplificaciones, ya que un SVG más simple se descargará, cargará y renderizará más rápido que uno complejo y la descarga, carga y renderización rápidas es el objetivo de la optimización: la única definición de simplificación que yo sepa, eso no es también la optimización está intentando hacer que las cosas sean más legibles para los humanos, lo que puede ir en contra de la optimización .
Creo que la pregunta es clara. Quiero la simplificación de la ruta. Al igual que el de Adobe Illustrator, que mencioné.

También hay svgcleaner .

En el momento en que publico esto, el último lanzamiento fue en abril de 2018 y el último compromiso (inédito) en noviembre de 2019, por lo que aún se puede considerar en desarrollo activo.

No sé cómo se compara en términos de características con las otras utilidades enumeradas, pero el principal beneficio que veo en esta utilidad es que está escrita en un lenguaje de programación real (Rust) en lugar de un lenguaje de programación como javascript o python.

Una característica que ya sé que no tiene es la capacidad de seleccionar un subconjunto del archivo svg original para exportar.

svgcleaner viene con compilaciones para linux, windows y macos.

https://github.com/RazrFalcon/svgcleaner/releases

Si ya tiene instalado Inkscape, puede usarlo como una utilidad de línea de comandos.

Escriba inkscape --helppara obtener instrucciones.

inkscape contiene el tiempo de ejecución de python y hace uso de scour (mencionado en otra respuesta) para realizar estas operaciones de línea de comandos.