2012-07-01 65 views
1

我希望能夠加入這樣一種方式,當我打開使用Inkscape SVG文件,每個將被確認爲一個單獨的對象,這樣的對象(矩形填充,輪廓等)到開羅SVG上下文我可以移動/編輯它。理想情況下,我還想將在Inkscape中顯示爲「圖層」的對象分組。Inkscape groups/layers generation with Cairo/Pycairo SVG?

這是可能通過開羅API(在某種程度上)做,否則我將不得不單獨生成每個元素,然後縫他們一起到Inkscape的SVG格式?也許開羅在這裏不是正確的工具?那麼最好的方法是什麼?

回答

2

開羅提供一個API渲染 SVG,但不用於產生它。

SVG只是XML,所以你可以使用任何現成的貨架XML庫來生成SVG內容。如果內容非常簡單,並且您想要一個基於python的解決方案,我會推薦lxml。在這種情況下,您將使用Python的ETree API來生成XML內容。另一方面,如果您生成的內容很複雜,例如需要動態定位元素,計算組和/或文本的邊界框以及其他複雜任務,那麼我會推薦Batik,這將推薦使用Batik實現SVG DOM並提供這樣的方法。在這種情況下,您將使用DOM API來生成內容。這裏有一些資源上的DOM:

蠟染是用Java編寫的,所以最直接的方法是應該使用Java進行開發,但如果您更願意使用Python語言,也可以使用Python的Jython

+0

謝謝。是的,我想繼續使用Python,並且最終內容將會非常複雜 - 我只是從簡單的對象開始,以便探索可能性,並瞭解實現我所追求的最佳方法。 –

+1

開羅還可以生成SVGs:http://cairographics.org/manual/cairo-SVG-Surfaces.html(但正如你看到的,API不會在這裏做什麼需要) –

+1

它實際上是相反的。開羅可以生成SVG,但不顯示它(除非你有一個像RSVG或CairoSVG附加庫)。 但是,是的,它也許不是,如果你想在生成的XML控制的工具。 –