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开发实现简单的记事本
Nov 15 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python实现进程同步和通信的方法
Jan 02 Python
python保存网页图片到本地的方法
Jul 24 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
Python(PyS60)实现简单语音整点报时
Nov 18 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
numpy库reshape用法详解
Apr 19 Python
python 爬取免费简历模板网站的示例
Sep 27 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
PHP的拦截器实例分析
2014/11/03 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
微信小程序签到功能
2018/10/31 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python 自动化表单提交实例代码
2017/06/08 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
浅谈Python 函数式编程
2020/06/20 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
Linux的文件类型
2012/03/07 面试题
股权转让协议范本
2014/12/07 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
python垃圾回收机制原理分析
2022/04/13 Python