Removendo dados pessoais do arquivo SVG

7

Pela primeira vez eu precisei fazer um diff em um arquivo SVG criado com o Inkscape, porque eu tinha um conflito no SVN.

Ao verificar as diferenças, notei que o arquivo SVG contém muitas informações pessoais. As informações pessoais são sobre os caminhos usados para exportação. A origem do SVG é assim:

<text ... inkscape:export-filename="<personal information here>" ... />

No meu caso, há muitos nomes de pastas que remontam a projetos em que trabalhei em 2009.

Como posso remover essas informações pessoais dos arquivos SVG do Inkscape?

Claro que eu poderia fazê-lo em um editor de texto manualmente, mas isso tem algumas desvantagens:

  • é propenso a erros. Você precisa ter certeza do que está fazendo. Deveria haver uma maneira mais segura de fazê-lo.
  • é demorado. Deveria haver uma maneira mais rápida de fazer isso.
  • pode estar incompleto. Talvez haja outros dados pessoais que ainda não descobri.
por Thomas Weller 09.04.2014 / 12:03

2 respostas

7

A maneira mais fácil de fazer isso é salvar o arquivo como um arquivo Optimized SVG . Essa opção está disponível no menu suspenso do diálogo Save As... . Quando você clica em salvar, aparece uma caixa de diálogo perguntando o que remover. Certifique-se de que a caixa Keep Editor Data é deixada desmarcada .

    
por 09.04.2014 / 14:58
3

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:

  1. remove todos os atributos inkscape e sodipodi
  2. remove todos os elementos inkscape e sodipodi
  3. remove o elemento metadata de todos os ancestrais
  4. 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')
    
por 15.08.2016 / 01:01

Tags