我正在寻找一个python包,它可以将' resize页面应用于绘图'到类似于Inkscape

时间:2016-11-03 14:38:05

标签: python svg inkscape

我有一个脚本,它使用rdkit创建化学分子的svg图纸。 我将在Web服务器上使用它们,因此,数字的大小确实很重要。 当前输出是包含svg文件的字符串。 我知道我可以使用Inkscape删除白色背景并将页面大小调整为绘图"这正是我想要的。但是当我创建很多数字时,我正在寻找一种自动调整数字大小的方法。 我对svg的python模块的体验非常有限,因此我希望有人可以建议一个可以应用所需更改的模块。

我知道我可以简单地删除

<rect style='opacity:1.0;fill:#ffffff;stroke:none' width='2000' height='2000' x='0' y='0'> </rect>

部分来自svg文件以删除白色背景,但我不知道如何实现&#39;调整大小页面来绘制&#39;部分。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

Inkscape可以从命令行执行各种功能,包括您要求的功能。

我的搜索首先引导了我Podfile Syntax Reference

这是许多动词的广泛列表&#39;或者Inkscape可以从命令行执行的操作。有一些链接的页面,但意识到可以使用Inkscape的命令行帮助找到信息

从命令行inkscape --help非常彻底。

上面提供的链接的输出只是此命令的副本: inkscape --verb-list

从该列表中,我们要找的是FitCanvasToDrawing

最终代码

inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose --verb=FileQuit input.svg

&#39;动词的格式&#39;是--verb = VerbName,可以链接许多不同的动作。在所有动词之后,你提供了Inkscape打开/操作的文件名(不幸的是动词不能接受会扩展脚本编写可能性的参数)

上面示例中的最后一个动词(FileQuit)是可选的,就好像您循环执行此操作的许多文件一样,将Inkscape打开而不是每隔几秒重新启动它可能会更快。

最后一点提出了Inkscape的一个限制,那就是UI需要打开才能执行此操作,这可能会减慢更大批次的流程,但对于一次性操作来说是微不足道的。可以找到here:的错误报告,并将其标记为“愿望清单”&#39;项目

最后,你提到了python,但是这可以通过在最后提供一个变量而不是静态文件名并在所有svg文件的命令行中运行那个脚本来使用shell脚本进行批处理在script *.svg之类的文件夹中,您可以随意使用您最熟悉的语言。