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 相关文章推荐
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
python通过链接抓取网站详解
Nov 20 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Django中的JWT身份验证的实现
May 07 Python
python 离散点图画法的实现
Apr 01 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
js实现常用排序算法
2016/08/09 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
pytorch进行上采样的种类实例
2020/02/18 Python
python实现AdaBoost算法的示例
2020/10/03 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
煤矿班组长岗位职责
2013/12/29 职场文书
安全环保演讲稿
2014/08/28 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
见习报告格式要求
2014/11/04 职场文书
二婚主持词
2015/06/30 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
2016年教师新年寄语
2015/08/18 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL