如何从Python运行Inkscape shell模式?

2024-10-02 02:29:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本来批量编辑一个包含1000多个PDF的文件夹,并将它们转换为SVG。下面的代码有效。但是每个文件都有两次Inkscape启动和退出。鉴于我有这么多的文件要处理,我想知道我是否可以加快它。你知道吗

Inkscape有一个命令行shell模式,可以使用inkscape --shell进入该模式。可以从Python访问shell模式吗?如果是这样的话,我该怎么做呢?这会有助于加快速度吗?(我试过通过subprocess发送inkscape --shell,但没有效果。)

import subprocess

directory = os.path.dirname(os.path.abspath(__file__))

pdfList = [f for f in glob.glob("*.pdf")]

inkscapePath = 'C:/Program Files/Inkscape/inkscape.exe'

outputfolder = os.path.join(directory, 'output')

if not os.path.exists(outputfolder):
    os.makedirs(outputfolder)

for idx, filename in enumerate(pdfList):

    filenameNoExt = filename[:-4]

    p = subprocess.call([inkscapePath,
                         directory + '/' + filenameNoExt + '.pdf',
                         '--export-plain-svg=' + outputfolder + '/' + filenameNoExt + '.svg'])
    p = subprocess.call([inkscapePath,
                         '--file=' + outputfolder + '/' + filenameNoExt + '.svg',
                         r'--verb', 'EditSelectAll',
                         r'--verb', 'FitCanvasToDrawing',
                         r'--verb', 'ObjectToPath',
                         r'--verb', 'FileSave',
                         r'--verb', 'FileQuit'])

This thread相关,但没有帮助。)


Tags: 文件pathsvgos模式shelldirectoryfile

热门问题