2

我希望能够将对象(填充的矩形、轮廓等)添加到 cairo SVG 上下文中,这样当我用 Inkscape 打开 SVG 文件时,每个对象都会被识别为一个单独的对象,这样我就可以移动/编辑它。理想情况下,我还想对在 Inkscape 中显示为“图层”的对象进行分组。

这是否可以通过 cairo API 来完成(在某种程度上),还是我必须单独生成每个元素,然后将它们全部拼接成 Inkscape SVG 格式?也许 cairo 不是这里的正确工具?那么最好的方法是什么?

4

1 回答 1

3

Cairo 提供了一个用于渲染SVG的 API ,但不用于生成它。

SVG 只是 XML,因此您可以使用任何现成的 XML 库来生成您的 SVG 内容。如果内容相当简单,并且您想要基于 python 的解决方案,我会推荐lxml。在这种情况下,您将使用 Python 的ETree API 来生成 XML 内容。

另一方面,如果您生成的内容很复杂,例如您需要动态定位元素、计算组和/或文本的边界框以及其他复杂任务,那么我会推荐Batik,它实现了 SVG DOM并提供了这样的方法。在这种情况下,您将使用 DOM API 来生成内容。以下是关于 DOM 的一些资源:

Batik is written in Java, and so the most straightforward approach would be to use Java to develop against it, but you could also use Jython, which is Python for Java, if you prefer to stick with the python language.

于 2012-07-01T10:47:55.883 回答