2

InkscapeでSVGファイルを開いたときに、それぞれが個別のオブジェクトとして認識されるように、オブジェクト(塗りつぶされた長方形、アウトラインなど)をcairoSVGコンテキストに追加できるようにしたいと思います。移動/編集します。理想的には、Inkscapeで「レイヤー」として表示されるオブジェクトもグループ化したいと思います。

これはcairoAPIを介して(ある程度)行うことができますか、それとも各要素を個別に生成してから、それらをすべて一緒にInkscape SVG形式にステッチする必要がありますか?たぶん、カイロはここでは適切なツールではありませんか?では、最善のアプローチは何ですか?

4

1 に答える 1

3

Cairoは、 SVGをレンダリングするためのAPIを提供しますが、SVGを生成するためのAPIは提供しません。

SVGは単なるXMLであるため、既成のXMLライブラリを使用してSVGコンテンツを生成できます。コンテンツがかなり単純で、Pythonベースのソリューションが必要な場合は、lxmlをお勧めします。この場合、PythonのETreeAPIを使用してXMLコンテンツを生成します。

一方、生成するコンテンツが複雑で、要素を動的に配置したり、グループやテキストの境界ボックスを計算したり、その他の複雑なタスクを実行したりする必要がある場合は、 SVGDOMを実装するBatikをお勧めします。そしてそのような方法を提供します。この場合、DOMAPIを使用してコンテンツを生成します。DOMに関するいくつかのリソースは次のとおりです。

BatikはJavaで記述されているため、最も簡単なアプローチはJavaを使用して開発することですが、Python言語を使い続けたい場合は、Java用のPythonであるJythonを使用することもできます。

于 2012-07-01T10:47:55.883 に答える