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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
python字符串连接方法分析
Apr 12 Python
django使用图片延时加载引起后台404错误
Apr 18 Python
python列表生成式与列表生成器的使用
Feb 23 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 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
用PHP读取超大文件的实例代码
2012/04/01 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
JavaScript入门之基本函数详解
2011/10/21 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
vue模式history下在iis中配置流程
2019/04/17 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
python操作MySQL数据库具体方法
2013/10/28 Python
Python列表append和+的区别浅析
2015/02/02 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python装饰器语法糖
2019/01/02 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Python enumerate内置库用法解析
2020/02/24 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
教师党员一句话承诺
2014/03/28 职场文书
公司承诺函范文
2015/01/21 职场文书
追悼会悼词大全
2015/06/23 职场文书
小学课改工作总结
2015/08/13 职场文书
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers