使用Cairo / Pycairo SVG创建Inkscape组/层?

时间:2012-07-01 10:08:21

标签: python svg cairo inkscape pycairo

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

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

1 个答案:

答案 0 :(得分:2)

Cairo为呈现 SVG提供了一个API,但不是用于生成它。

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

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

Batik是用Java编写的,因此最直接的方法是使用Java来开发它,但是你也可以使用http://www.w3.org/TR/SVG/svgdom.html,这是Python for Java,如果你更喜欢坚持使用python语言。