Python中的Inkscape扩展

Python中的Inkscape扩展,python,inkscape,Python,Inkscape,对于我的项目工作,我使用Inkscape完成两项任务: 要调整绘图页的大小(我使用另一个软件创建了该绘图页)以完全适合绘图:文件-->文档属性-->将页面调整为内容… 将文件另存为PDF 这项任务相当简单,但对于较大数量的图形,这项任务非常耗时 我检查了Inkscape中的宏功能,但没有这样的功能。然而,我发现Inkscape允许人们使用Python实现自己的扩展脚本 如果你们中有人有类似的经验,可以帮助我实现上面列出的作为Inkscape扩展的步骤吗 可能有用的链接: EDIT:接受的答案不会

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

  • 要调整绘图页的大小(我使用另一个软件创建了该绘图页)以完全适合绘图:
    文件
    -->
    文档属性
    -->
    将页面调整为内容…
  • 将文件另存为PDF
  • 这项任务相当简单,但对于较大数量的图形,这项任务非常耗时

    我检查了Inkscape中的宏功能,但没有这样的功能。然而,我发现Inkscape允许人们使用Python实现自己的扩展脚本

    如果你们中有人有类似的经验,可以帮助我实现上面列出的作为Inkscape扩展的步骤吗

    可能有用的链接:


    EDIT:接受的答案不会使用内部python扩展解决我的请求,但它使用
    inkscape
    命令行选项解决了任务。

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

    inkscape -D -A myoutputfile.pdf  myinputfile.whatever
    
    -A表示要输出为PDF(需要文件名),而-D表示要根据图形调整大小

    如果从未使用过subprocess模块,最简单的方法是使用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])
    
    编辑:

    处理在命令行上传递的输入文件名的最简单的脚本(未测试!)如下所示:

    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])
    
    导入系统 导入操作系统 #执行除程序名以外的所有文件 对于sys.argv[1:]中的inpfn: #将结果文件命名为“已调整大小的\.pdf” #并将它们放在当前目录中 shortname=os.path.basename(inpfname).rsplit('.',1)[0] outfn='已调整大小的_u%s.pdf'%shortname' 子流程调用(['inkscape','-D','-A',OutPN,inpfn])
    您的意思是通过命令行传递?还是从文件中?还是要转换目录中的所有文件?