Python实现批量把SVG格式转成png、pdf格式的代码分享
admin
2023-07-31 02:05:06
0

需要提前安装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

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...