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基本语法经典教程
Mar 11 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
python图书管理系统
Apr 05 Python
PyQt5实现下载进度条效果
Apr 19 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
python绘制随机网络图形示例
Nov 21 Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
Python新手学习raise用法
Jun 03 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数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
PHP.vs.JAVA
2016/04/29 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
代码生成器 document.write()
2007/04/15 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python编程实现归并排序
2017/04/14 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
信息专业个人的自我评价
2013/12/27 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
教师节演讲稿
2014/05/06 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
介绍信格式
2015/01/30 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
《我的长生果》教学反思
2016/02/20 职场文书