これを行う方法を理解しようとして、私は多くの困難を経験しました。他の人がこの答えを見つけて、多くの時間を節約できることを願っています!
Python 3 では、もともと C で書かれたいくつかのライブラリ ( GTK、Clutter、およびlibrsvgを含む) の Python 言語バインディングは、 GObject イントロスペクションライブラリ (C の「オブジェクト」から Python オブジェクトを動的に生成する Python コード) に置き換えられました。
Python 3 で使用するlibrsvg
には、まず必要な GObject イントロスペクション ライブラリを (Python 3 Cairo ライブラリに加えて) インストールします。たとえば、Ubuntu 13.10 の場合:
sudo apt-get install gir1.2-rsvg-2.0 python3-cairo python-gi-cairo python3-gi
次に、次のコードでテストします。
#!/usr/bin/env python3
# `gi.repository` is a special Python package that dynamically generates objects
import gi
gi.require_version('Rsvg', '2.0')
from gi.repository import Rsvg
import cairo
INPUTFILE = 'tiger.svg'
if __name__ == '__main__':
# create the cairo context
surface = cairo.SVGSurface('myoutput.svg', 580, 530)
context = cairo.Context(surface)
# use rsvg to render the cairo context
handle = Rsvg.Handle()
svg = handle.new_from_file(INPUTFILE)
svg.render_cairo(context)
これをプロジェクトに実装するには、
cairo.SVGSurface
描画するサーフェスに変更し、
- の値を、
INPUTFILE
レンダリングする SVG ファイルの名前に変更します。