首页 > 编程 > Python > 正文

Python实现批量把SVG格式转成png、pdf格式的代码分享

2019-11-25 18:16:45
字体:
来源:转载
供稿:网友

需要提前安装cairosvg模块,下载地址http://cairosvg.org/download/

Code:

#! encoding:UTF-8import cairosvgimport os loop = Truewhile loop:    svgDir = raw_input("请输入SVG文件目录")    if os.path.exists(svgDir) and os.path.isdir(svgDir):        loop = False    else:        print "错误:您输入的SVG文件目录不存在或者不是一个有效的目录,请重新输入" loop = Truewhile loop:    exportDir = raw_input("请输入导出目录")    if os.path.exists(exportDir):        loop = False    else:        print "错误:您输入的导出目录[" , exportDir  , "] 不存在,是否要创建这个目录?"        loops = True             while loops:            msg = ""            cmd = raw_input("创建 (Y) 重新 (R)")            if cmd.upper() == "R":                loops = False            elif cmd.upper() == "Y":                os.makedirs(exportDir, True)                if os.path.exists(exportDir):                    loop = False                    loops = False                else:                    print "创建目录失败[",exportDir,"], 请重新输入"            else:                print "找不到您输入的命令,请重新输入"              cate = ("png", "pdf")print "导出类型:"for i in cate:    print i     loop = Truewhile loop:    exportFormat = raw_input("请输入导出类型")    if exportFormat.lower() in cate:        loop = False    else:        print "您输入的类型不存在,请重新输入" def export(fromDir, targetDir, exportType):    print "开始执行转换命令..."    files = os.listdir(fromDir)    num = 0    for fileName in files:        path = os.path.join(fromDir,fileName)        if os.path.isfile(path) and fileName[-3:] == "svg":            num += 1            fileHandle = open(path)            svg = fileHandle.read()            fileHandle.close()            exportPath = os.path.join(targetDir, fileName[:-3] + exportType)            exportFileHandle = open(exportPath,'w')                         if exportType == "png":                cairosvg.svg2png(bytestring=svg, write_to=exportPath)            elif exportType == "pdf":                cairosvg.svg2pdf(bytestring=svg, write_to=exportPath)                             exportFileHandle.close()            print "Success Export ", exportType, " -> " , exportPath         print "已导出 ", num, "个文件"export(svgDir, exportDir, exportFormat)

使用:

复制代码 代码如下:

请输入SVG文件目录d:/svg
请输入导出目录d:/images
错误:您输入的导出目录[ d:/images ] 不存在,是否要创建这个目录?
创建 (Y) 重新 (R)Y
导出类型:
png
pdf
请输入导出类型png
开始执行转换命令...
Success Export  png  ->  d:/images/a.png
Success Export  png  ->  d:/images/db2.png
Success Export  png  ->  d:/images/db3.png
已导出  3 个文件

复制代码 代码如下:

D:/>tree svg /F
Folder PATH listing
Volume serial number is 4603-09B2
D:/SVG
    a.svg
    db2.svg
    db3.svg
 
No subfolders exist
 
 
D:/>tree images /F
Folder PATH listing
Volume serial number is 4603-09B2
D:/IMAGES
    a.png
    db2.png
    db3.png
 
No subfolders exist

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表