Python中的Inkscape扩展

时间:2015-08-05 19:21:14

标签: python inkscape

对于我的项目工作,我使用Inkscape执行两项任务:

  1. 调整图纸页面(我使用其他软件创建)以完全符合图纸:File - > Document Properties - > Resize page to content...
  2. 将文件另存为PDF
  3. 这项任务相当简单,但是对于大量的图纸而言,这些任务非常耗时。

    我检查了Inkscape中的宏功能,但没有这样的东西。但是我发现Inkscape允许用Python实现自己的扩展脚本。

    如果您有任何类似的经历,可以帮我实现上面列出的Inkscape扩展步骤。

    潜在有用的链接:http://wiki.inkscape.org/wiki/index.php/PythonEffectTutorial

    编辑:接受的答案无法使用内部python扩展解决我的请求,但它使用inkscape命令行选项解决了该任务。

1 个答案:

答案 0 :(得分:1)

我从未在inkscape中编写过脚本,但我一直使用python中的inkscape(通过子进程模块)。如果在命令行上键入inkscape --help,则会看到所有选项。我相信您的用例,以下内容将起作用:

inkscape -D -A myoutputfile.pdf  myinputfile.whatever

-A表示要输出为PDF(需要文件名),-D表示要调整大小到图纸。

如果您从未使用过子模块,最简单的方法是使用subprocess.call,如下所示:

subprocess.call(['inkscape', '-D', '-A', outfn, inpfn])

编辑:

处理命令行上传递的输入文件名的最可能的脚本(未经测试!)看起来像这样:

import sys
import os
# Do all files except the program name
for inpfn in sys.argv[1:]:
    # Name result files 'resized_<oldname>.pdf'
    # and put them in current directory
    shortname = os.path.basename(inpfname).rsplit('.',1)[0]
    outfn = 'resized_%s.pdf' % shortname
    subprocess.call(['inkscape', '-D', '-A', outfn, inpfn])