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