| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # usage:
- # strokenostrokewidth.py -d [svg folder] -f yes/no
- # looks for stroke attribute with no stroke-width attribute; if -f is "yes" then set stroke-width to 1
- import getopt, sys, os, os.path, re, xml.dom.minidom, xml.dom
-
- def usage():
- print """
- usage:
- strokenostrokewidth.py -d [svg folder] -f yes
- looks for stroke attribute with no stroke-width attribute; if -f is "yes" then set stroke-width to 1
- """
-
- def main():
- try:
- opts, args = getopt.getopt(sys.argv[1:], "hf:d:", ["help", "fix", "directory"])
- except getopt.GetoptError, err:
- # print help information and exit:
- print str(err) # will print something like "option -a not recognized"
- usage()
- sys.exit(2)
-
- dir = None
- fix = None
-
- for o, a in opts:
- #print o
- #print a
- if o in ("-d", "--directory"):
- dir = a
- elif o in ("-h", "--help"):
- usage()
- sys.exit(2)
- elif o in ("-f", "--fix"):
- fix = a
- else:
- assert False, "unhandled option"
-
- if(not(dir)):
- usage()
- sys.exit(2)
-
- for root, dirs, files in os.walk(dir, topdown=False):
- for filename in files:
- if not filename.endswith(".svg"):
- continue
-
- svgFilename = os.path.join(root, filename)
- try:
- dom = xml.dom.minidom.parse(svgFilename)
- except xml.parsers.expat.ExpatError, err:
- print str(err), svgFilename
- continue
-
- changed = 0
- todo = [dom.documentElement]
- while len(todo) > 0:
- element = todo.pop(0)
- for node in element.childNodes:
- if node.nodeType == node.ELEMENT_NODE:
- todo.append(node)
- stroke = element.getAttribute("stroke")
- strokewidth = element.getAttribute("stroke-width")
- if len(stroke) == 0:
- style = element.getAttribute("style")
- if len(style) != 0:
- style = style.replace(";", ":")
- styles = style.split(":")
- for index, name in enumerate(styles):
- if name == "stroke":
- stroke = styles[index + 1]
- elif name == "stroke-width":
- strokewidth = styles[index + 1]
-
- if len(stroke) > 0 and stroke != "none":
- if len(strokewidth) == 0:
- print "no stroke width", svgFilename # ,
- if fix != "yes":
- break
-
- # print "fixing", element.toxml("UTF-8")
- element.setAttribute("stroke-width", "1")
- changed = 1
-
- if changed:
- outfile = open(svgFilename, 'wb')
- s = dom.toxml("UTF-8")
- outfile.write(s)
- outfile.flush()
- outfile.close()
-
-
- if __name__ == "__main__":
- main()
|