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实现八大排序算法(2)
Sep 14 Python
python3调用R的示例代码
Feb 23 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
Python缓存技术实现过程详解
Sep 25 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
Django中的session用法详解
Mar 09 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
Django Model中字段(field)的各种选项说明
May 19 Python
call在Python中改进数列的实例讲解
Dec 09 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横向重复区域显示二法
2008/09/25 PHP
深入解析php之apc
2013/05/15 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
List the UTC Time on a Computer
2007/06/11 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
基于Python代码编辑器的选用(详解)
2017/09/13 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
应届毕业生自我评价分享
2013/12/15 职场文书
人力资源总监工作说明
2014/03/03 职场文书
医院院务公开实施方案
2014/05/03 职场文书
大学生党员自我评价
2015/03/04 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
小学课改工作总结
2015/08/13 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
python playwright之元素定位示例详解
2022/07/23 Python