Tengo varias SVGs, algunas de ellas bastante grandes (11MB) y son creados a partir de un PDF con pdf2svg.

El problema es, que el SVG es demasiado grande, tarda mucho tiempo para abrir, y es innecesariamente complejo. Contiene principalmente el texto y algunas imágenes (creo que el periódico), y el texto se divide en pequeños trozos de caracteres, ni siquiera palabras.

Necesito para optimizar, en primer lugar para reducir el tamaño, y también para reducir la cantidad de elementos para hacer la carga más rápido. La única cosa que he pensado hasta ahora está mirando a los personajes que están en una línea, y únete a ellos en una sola <tspan>.

Esto debería reducir la cantidad de elementos de texto por un margen significativo, porque parece que la mayoría de los grupos de 1-5 letras.

Pero estoy buscando algo más cosas que puede hacer para el SVG para reducir el tamaño. También hay una fuente principal, que es utilizado por cerca de 95% del texto, pero tal y como está ahora, todo el texto se define como glifos (prestados formas).

Es posible incrustar la fuente para que el texto se representa como texto, y no como formas?

Además, si usted sabe de alguna mejor biblioteca para la conversión de archivos Pdf a formato SVG, agradecería cualquier entrada. El único requisito es que el SVG salida debería ser exactamente el mismo que el PDF.

También me gustaría señalar que la velocidad no es realmente importante. No importa el largo de la conversión, mientras se produce el resultado deseado.

  • Suena como lo que realmente desea es HTML. Si a optimizar las SVG cambiando el texto pictogramas a un texto con una fuente incorporada, y a optimizar las restantes formas e imágenes que hacen de ellos un menor tamaño de archivo, que terminaría con HTML.
InformationsquelleAutor Jakub Arnold | 2012-01-25

7 Comentarios

  1. 27

    SVG-Limpiador parece funcionar a la perfección: mucho más rápido thanb otros, una mejor compresión, robusto, en mis pruebas, lote carpeta proccessing, y hey! un instalador de windows para nosotros la gente perezosa!

    Mi pruebe: Original tamaño de archivo: 241 KB, después de InkScape eliminar refs: 149K, limpiar con la herramienta: 38 KB, limpia y comprimido: 5 KB (.sgvz la extensión de archivo).

    Traté de abrir la última, esperando un dibujo en blanco… Pero mi gráficos que aún estaban intactas!

    Descargar aquí (Windows, Ubuntu, o de la Fuente)

    • El windows enlace de descarga no funciona (al menos actualmente). La versión para windows se puede descargar de aquí
    • svg-limpia no funciona perfectamente. Que se elimine todos los títulos de mi imagen cuando limpié el archivo svg., incluso cuando se utiliza preset=basic.
    • Es allí una manera de tener SVGCleaner lectura de stdin y escribir a stdout en lugar de los archivos? He intentado especificar /dev/stdin y /dev/stdout como los archivos de entrada y salida, pero que no se pudo.
  2. 22

    Recientemente he comenzado a hacer un programa en Python para optimizar los svg, que se puede encontrar en: https://github.com/petercollingridge/SVG-Optimiser

    Hay una muy preliminar versión en línea en:
    http://petercollingridge.appspot.com/

    Con más información en:
    http://www.petercollingridge.co.uk/blog/svg-optimiser

    Está lejos de ser completa y, probablemente, muy buggy, pero se trata de algunas de las cuestiones Chasbeen mencionados, tales como la eliminación innecesaria la precisión y el estilo por defecto de los atributos. También puede quitar atributos innecesarios y espacios de nombres, si usted sabe lo que usted está buscando, y convertir los estilos CSS que hace que sea más fácil ver cómo podría ser mejorado.

    Yo realmente no entiendo lo que quieres decir acerca de la incrustación de fuentes. Si pega un ejemplo de fragmento de la SVG mostrando la gyphs y varios elementos de carácter, yo podría ser capaz de incluir un método combinado de ellos.

  3. 22

    Puedo recomendar Recorrer que la he usado mucho a mí mismo cuando la limpieza innecesaria resto de archivos SVG, que es algo de un hobby mío.

    Un ejemplo de socavación de la línea de comandos que puede servir bien (y que yo tiendo a empezar desde):

    scour --enable-viewboxing --create-groups --shorten-ids --enable-id-stripping --enable-comment-stripping --disable-embed-rasters --remove-metadata --strip-xml-prolog -p 9 < old.svg > new.svg

    Asegúrese de comparar lo antiguo con lo nuevo para asegurarse de que no arruinar nada y trate de bajar la -p precisión decimal (el valor predeterminado es 5 si no le da a uno); en algún nivel, probablemente comienza a distorsionar las cosas bastante mal, pero uno o dos decimales más altos deben tener buen aspecto.

    Si quieres adoptar un manual de enfoque, hay un montón de trucos de el comercio se reunieron en la Kilobyte SVG Reto conjuntos de cambios, que son como una especie de combinado de aprendizaje y enseñanza lugar para este tipo de cosas.

    Sí, puede incrustar fuentes en el archivo SVG, o un enlace externo, como se demuestra por Mike Bostock a tomar en la WebPlatform.org logotipo (no-html-envuelto versión aquí).

    Es, por supuesto, mucho más fácil conseguirlo si usted tiene un conocimiento detallado de cuáles son las fuentes utilizadas que si usted elige un arbitrario pdf y convertirlo; yo no sé de ningún tipo de herramientas que crean un sin-nombre de la fuente a partir de lo que los glifos el original pdf incrustado sin que tengas que hacer la mayoría (o todos) de que el trabajo usted mismo.

    Además, hay una creciente lista de SVG herramientas de optimización en el Kilobyte SVG Reto LÉAME‘s en la sección de Herramientas.

    • Por ahora, de socavación es mi primera opción. La salida es perfecto y la luz.
    • Yo sólo lo intentó. Funcionó bien. scour -i mat1.svg -o mat1_clean2.svg y no quitar el título de la parcela en la imagen, como svgcleaner hizo.
    • En OpenBSD: pkg_add scour. Buena y rápida solución.
  4. 8

    https://github.com/svg/svgo

    sudo npm install -g svgo

    para optimizar todos los svg en el directorio actual:

    svgo -f .

    Si usted no tiene un mecanismo nacional de prevención, se puede instalar en Ubuntu así:

    sudo apt-get update && sudo apt-get install nodejs-legacy npm
    • No es bueno en mi SVG 1.1 creado con Inkscape 0.48. SVGO salidas desordenado formas, no se puede utilizar.
    • SVGO es un gran CLI herramienta para la optimización de los svg. Por cierto, para los no iniciados, SVG ya es un muy potente y ligero formato de imagen. Es probable que obtenga más explosión para su buck optimización de imágenes raster.
  5. 2

    Creo que su convertidos SVG es, probablemente, muy hinchado de lo que podría ser. No estoy seguro de si Inkscape va a tomar!
    Hay opciones de menú como «Convertir a Texto», pero estos no necesariamente trabajan.

    Puede hacer la búsqueda y reemplazar en el archivo para quitar las referencias a defecto SVG valores de atributos tales como..
    accidente cerebrovascular:#000000;
    stroke-width:1px;
    accidente cerebrovascular-linecap:a tope;
    accidente cerebrovascular-linejoin:inglete;
    accidente cerebrovascular-opacity:1;
    Muchos de estos son por defecto de todos modos para buscar y reemplazar con nada por aquellos.

    También es increíble cómo se puede reducir la innecesaria la precisión. En su conversión de ese archivo en particular que usted podría encontrar un decimal que termina .0000001 o .99999675 todas estas repeticiones pueden ser removidos/reducción de

  6. 0

    El uso de la biblioteca de python feedparser, que incluye SVG saneamiento, escribí esta función que molesto envuelve svg en una sola RSS punto con el fin de analizarlo.

    import feedparser
    def sanitize_svg(svg):
        feed = """<?xml version="1.0" encoding="UTF-8" ?><rss><channel><item><description>""" + svg + """</description></item></channel></rss>"""
        parsed = feedparser.parse(feed)
        return parsed.entries[0].description.encode('utf-8')

    Aunque hecha para la creación de listas blancas de los elementos con la seguridad en mente, también se reduce el svg tamaño un poco justo.

Dejar respuesta

Please enter your comment!
Please enter your name here