Python实现批量把SVG格式转成png、pdf格式的代码分享
需要提前安装cairosvg模块,下载地址http://cairosvg.org/download/
Code:
#!encoding:UTF-8 importcairosvg importos loop=True whileloop: svgDir=raw_input("请输入SVG文件目录") ifos.path.exists(svgDir)andos.path.isdir(svgDir): loop=False else: print"错误:您输入的SVG文件目录不存在或者不是一个有效的目录,请重新输入" loop=True whileloop: exportDir=raw_input("请输入导出目录") ifos.path.exists(exportDir): loop=False else: print"错误:您输入的导出目录[",exportDir ,"]不存在,是否要创建这个目录?" loops=True whileloops: msg="" cmd=raw_input("创建(Y)重新(R)") ifcmd.upper()=="R": loops=False elifcmd.upper()=="Y": os.makedirs(exportDir,True) ifos.path.exists(exportDir): loop=False loops=False else: print"创建目录失败[",exportDir,"],请重新输入" else: print"找不到您输入的命令,请重新输入" cate=("png","pdf") print"导出类型:" foriincate: printi loop=True whileloop: exportFormat=raw_input("请输入导出类型") ifexportFormat.lower()incate: loop=False else: print"您输入的类型不存在,请重新输入" defexport(fromDir,targetDir,exportType): print"开始执行转换命令..." files=os.listdir(fromDir) num=0 forfileNameinfiles: path=os.path.join(fromDir,fileName) ifos.path.isfile(path)andfileName[-3:]=="svg": num+=1 fileHandle=open(path) svg=fileHandle.read() fileHandle.close() exportPath=os.path.join(targetDir,fileName[:-3]+exportType) exportFileHandle=open(exportPath,'w') ifexportType=="png": cairosvg.svg2png(bytestring=svg,write_to=exportPath) elifexportType=="pdf": cairosvg.svg2pdf(bytestring=svg,write_to=exportPath) exportFileHandle.close() print"SuccessExport",exportType,"->",exportPath print"已导出",num,"个文件" export(svgDir,exportDir,exportFormat)
使用:
请输入SVG文件目录d:\svg 请输入导出目录d:\images 错误:您输入的导出目录[d:\images]不存在,是否要创建这个目录? 创建(Y)重新(R)Y 导出类型: png pdf 请输入导出类型png 开始执行转换命令... SuccessExport png -> d:\images\a.png SuccessExport png -> d:\images\db2.png SuccessExport png -> d:\images\db3.png 已导出 3个文件
D:\>treesvg/F FolderPATHlisting Volumeserialnumberis4603-09B2 D:\SVG a.svg db2.svg db3.svg Nosubfoldersexist D:\>treeimages/F FolderPATHlisting Volumeserialnumberis4603-09B2 D:\IMAGES a.png db2.png db3.png Nosubfoldersexist