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


Posted in Python onAugust 21, 2014

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

Code:

#! encoding:UTF-8
import cairosvg
import os
 
loop = True
while loop:
    svgDir = raw_input("请输入SVG文件目录")
    if os.path.exists(svgDir) and os.path.isdir(svgDir):
        loop = False
    else:
        print "错误:您输入的SVG文件目录不存在或者不是一个有效的目录,请重新输入"
 
loop = True
while 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 = True
while 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
Python 相关文章推荐
使用python实现strcmp函数功能示例
Mar 25 Python
简单介绍Python中的JSON使用
Apr 28 Python
结合Python的SimpleHTTPServer源码来解析socket通信
Jun 27 Python
Python+Wordpress制作小说站
Apr 14 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
python实现电子产品商店
Feb 26 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
Django 拆分model和view的实现方法
Aug 16 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
解决pip安装的第三方包在PyCharm无法导入的问题
Oct 15 Python
python生成日历实例解析
Aug 21 #Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 #Python
Python中除法使用的注意事项
Aug 21 #Python
Python中dictionary items()系列函数的用法实例
Aug 21 #Python
Python 不同对象比较大小示例探讨
Aug 21 #Python
python字符串连接方式汇总
Aug 21 #Python
零基础学Python(一)Python环境安装
Aug 20 #Python
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
php in_array 函数使用说明与in_array需要注意的地方说明
2010/04/13 PHP
深入密码加salt原理的分析
2013/06/06 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
Javascript中的数学函数
2007/04/04 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
js编写选项卡效果
2017/05/23 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
python的turtle库使用详解
2019/05/10 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
运动会跳远广播稿
2014/02/04 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
企业法人代表证明书
2014/09/27 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
碧霞祠导游词
2015/02/09 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
民事二审代理词
2015/05/25 职场文书
小孩不笨观后感
2015/06/03 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书