SVG Clean script

by | Sep 15, 2019

Python SVG clean scrip

I use inkscape to edit and create SVGs and it adds loads of tags that bloat the file.

This script will remove those tags.

import sys
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
import re
def clean_svg_file(content):
replacement = content
for nsName in tags:
print(nsName)
reg_xmlns = xmlns: + nsName + =”.*?”\\s*
reg_tag = < + nsName + :([^>]|[\\s])*?((\\/>)|(>[\\s\\S]*?<\\/ + nsName + :.*?>))\\s*
reg_attr = nsName + :.*?=”.*?”\\s*
replacement = re.sub(reg_xmlns, , replacement)
replacement = re.sub(reg_tag, , replacement)
replacement = re.sub(reg_attr, , replacement)
return replacement
def file_save(text):
f = filedialog.asksaveasfile(mode=w, defaultextension=.svg)
if f is None: # asksaveasfile return `None` if dialog closed with “cancel”.
return
f.write(text)
f.close()
messagebox.showinfo(Information, File has been cleaned.)
def file_open():
file_path = filedialog.askopenfilename(defaultextension=.svg)
with open(file_path) as f:
read_data = f.read()
f.close()
return read_data
try:
root = tk.Tk()
root.withdraw()
tags = [inkscape, sodipodi, rdf, cc, dc, metadata]
file_data = file_open()
question = messagebox.askokcancel(Clean file, Do you want to clean the file from
‘inkscape’, ‘sodipodi’, ‘rdf’, ‘cc’, ‘dc’, ‘metadata)
if question:
cleaned = clean_svg_file(file_data)
file_save(cleaned)
sys.exit(0)
except:
print(sys.exc_info()[0])
messagebox.showerror(Error, Could not clean file\n + str(sys.exc_info()[0]))
raise
sys.exit(1)

 

Pin It on Pinterest