使用 Inkscape 和 Python 将 SVG 重复转换为 EMF 的最快方法

问题描述 投票:0回答:1

蟒蛇 3.9.0 墨景 0.92

我使用 Inkscape 将 SVG 转换为 EMF,但这需要太多时间。

简单的示例代码

import subprocess

def convert_svg_to_emf(input_svg_path, output_emf_path):
    # This method takes ~1 seconds
    subprocess.run([
        "C:\\Inkscape\\Inkscape.exe", # Inkscape executor path
        input_svg_path, # Input SVG file
        "--export-emf",
        output_emf_path # Output EMF file
    ])

# Assume I have 100 files to convert
for i in range(100):
    convert_svg_to_emf(f"svg{i}.svg", f"emf{i}.emf")

# This script takes ~100 seconds

虽然它取决于输入文件,但每次调用“convert_svg_to_emf”至少需要几秒钟。但是当我尝试直接从 Inkscape 转换它时,输出文件几乎立即出现。所以我假设 subprocess.run 的应用程序“打开”和“退出”会占用大部分处理时间。

有什么方法可以让它更快吗?

我的期待

inkscape = open_inkscape() # Keep opening Inkscape app

for i in range(100):
    inkscape.convert_svg_to_emf(f"svg{i}.svg", f"emf{i}.emf")

inkscape.quit() # Quit the app after all work done

# This script conducts 'opening' and 'quitting' just once regardless of number of files.
python python-3.x subprocess inkscape
1个回答
0
投票

Inkscape 提供一些 命令行选项。最有效的方法是使用管道命令,或以 Shell 模式运行 Inkscape。来自示例:

cat my_file.svg | inkscape --pipe --export-filename=my_file.pdf
© www.soinside.com 2019 - 2024. All rights reserved.