我正在寻找一个 python 包,它可以将 'resize page to drawing' 应用于类似于 Inkscape 的 svg 文件
I am looking for a python package which can apply 'resize page to drawing' to a svg files similar to Inkscape
我有一个脚本,它使用 rdkit 创建化学分子的 svg 图。
我将在 Web 服务器上使用它们,因此,数字的大小很重要。
当前输出是一个包含 svg 文件的字符串。
我知道我可以使用 Inkscape 删除白色背景和 "resize page to drawing" 这正是我想要的。但是当我安静地创建很多图形时,我正在寻找一种自动调整图形大小的方法。
我对 svg 的 python 模块的经验非常有限,因此我希望有人可以建议一个可以应用所需更改的模块。
我知道我可以简单地删除
<rect style='opacity:1.0;fill:#ffffff;stroke:none' width='2000' height='2000' x='0' y='0'> </rect>
svg 文件中的部分删除了白色背景,但我不知道如何实现 'resize page to drawing' 部分。
非常感谢任何帮助。
Inkscape 可以从命令行执行各种功能,包括您所要求的。
我的搜索首先引导我 here:
这是 Inkscape 可以从命令行执行的许多 'verbs' 或操作的详尽列表。那里有一些 linked 页面,但意识到可以使用 Inkscape 的命令行帮助找到信息
从命令行 inkscape --help
非常彻底。
上面提供的 link 的输出只是这个命令的一个副本:
inkscape --verb-list
.
从该列表中,我们正在寻找的是 FitCanvasToDrawing
最终代码
inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose --verb=FileQuit input.svg
'verbs' 的格式是 --verb=VerbName 并且可以链接许多不同的操作。在所有动词之后,您提供 Inkscape 将要访问的文件名 open/manipulate (不幸的是,动词不能采用会扩展脚本可能性的参数).
上面示例中的最后一个动词 (FileQuit) 是可选的,就好像您正在通过许多文件循环执行此操作一样,让 Inkscape 打开而不是每隔几秒重新启动它可能会更快。
最后一点提出了 Inkscape 的一个局限性,那就是 UI 需要打开才能执行此操作,这可能会减慢更大批量的过程,但对于一次性来说微不足道。可以在 here 中找到关于此的错误报告并已标记为 'Wishlist' 项。
最后,你提到了 python,但这可以用 shell 脚本批处理,方法是在末尾提供一个变量而不是静态文件名和 运行 that 来自文件夹中所有 svg 文件的命令行脚本 script *.svg
但请随意使用您最熟悉的语言。
我有一个脚本,它使用 rdkit 创建化学分子的 svg 图。 我将在 Web 服务器上使用它们,因此,数字的大小很重要。 当前输出是一个包含 svg 文件的字符串。 我知道我可以使用 Inkscape 删除白色背景和 "resize page to drawing" 这正是我想要的。但是当我安静地创建很多图形时,我正在寻找一种自动调整图形大小的方法。 我对 svg 的 python 模块的经验非常有限,因此我希望有人可以建议一个可以应用所需更改的模块。
我知道我可以简单地删除
<rect style='opacity:1.0;fill:#ffffff;stroke:none' width='2000' height='2000' x='0' y='0'> </rect>
svg 文件中的部分删除了白色背景,但我不知道如何实现 'resize page to drawing' 部分。
非常感谢任何帮助。
Inkscape 可以从命令行执行各种功能,包括您所要求的。
我的搜索首先引导我 here:
这是 Inkscape 可以从命令行执行的许多 'verbs' 或操作的详尽列表。那里有一些 linked 页面,但意识到可以使用 Inkscape 的命令行帮助找到信息
从命令行 inkscape --help
非常彻底。
上面提供的 link 的输出只是这个命令的一个副本:
inkscape --verb-list
.
从该列表中,我们正在寻找的是 FitCanvasToDrawing
最终代码
inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose --verb=FileQuit input.svg
'verbs' 的格式是 --verb=VerbName 并且可以链接许多不同的操作。在所有动词之后,您提供 Inkscape 将要访问的文件名 open/manipulate (不幸的是,动词不能采用会扩展脚本可能性的参数).
上面示例中的最后一个动词 (FileQuit) 是可选的,就好像您正在通过许多文件循环执行此操作一样,让 Inkscape 打开而不是每隔几秒重新启动它可能会更快。
最后一点提出了 Inkscape 的一个局限性,那就是 UI 需要打开才能执行此操作,这可能会减慢更大批量的过程,但对于一次性来说微不足道。可以在 here 中找到关于此的错误报告并已标记为 'Wishlist' 项。
最后,你提到了 python,但这可以用 shell 脚本批处理,方法是在末尾提供一个变量而不是静态文件名和 运行 that 来自文件夹中所有 svg 文件的命令行脚本 script *.svg
但请随意使用您最熟悉的语言。