Eu tenho um monte de SVGs de diferentes fontes, então eu estava procurando uma solução automatizada .
1. SVGO (NodeJS, javascript)
Existe um pacote NPM muito bom: SVGO
Como uso o gulp
como gerenciador de tarefas, o gulp-svgmin (ou gulp-svgo ) é muito útil
2. XSLT (transformar SVG)
A outra abordagem automatizada - use XSLT. Aqui está uma transformação XSL que usei para limpar o SVG.
Este XSLT faz o seguinte:
- remove todos os atributos
inkscape
e sodipodi
- remove todos os elementos
inkscape
e sodipodi
- remove o elemento
metadata
de todos os ancestrais
- remove os atributos
style
(usamos CSS) - somente quando a variável preserve-style
está definida como false
Como resultado, você obterá o arquivo SVG limpo.
Como executar a transformação
Javascript (compilação gulp)
Se você usar o gulp como sistema de compilação, poderá usar este plug-in:
Python e lxml.etree
Use este script python curto:
#!/usr/bin/python
import lxml.etree as ET
def clean_file(path, pathto):
svg1 = ET.parse(path)
xslt = ET.parse('cleanup-svg.xsl')
transform = ET.XSLT(xslt)
svg2 = transform(svg1)
with open(pathto, 'w') as f:
f.write(ET.tostring(svg2, pretty_print=True))
clean_file('a.svg', 'b.svg')