我在试图弄清楚如何做到这一点时遇到了很多困难。我希望其他人找到这个答案并为自己节省很多时间!
对于 Python 3,最初用 C 编写的几个库(包括GTK、Clutter和librsvg)的 Python 语言绑定已被GObject 自省库所取代,后者是从 C“对象”动态生成 Python 对象的 Python 代码。
为了librsvg
在 Python 3 上使用,首先安装必要的 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 文件的名称。