我已经设法使用rsvg读取SVG并通过Cairo将其输出到PNG。
尽管存在许多类似的问题,但我还没有看到任何关于如何通过rsvg& amp;转换为PDF的文档。开罗。我知道命令行' rsvg' rsvp-convert'工具,但希望将功能合并到我的Python代码中。也没有启动子进程。
为了举例,这里基本上是我目前用来渲染PNG的东西:
img = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
ctx = cairo.Context(img)
handler= rsvg.Handle(None, svgstr)
handler.render_cairo(ctx)
img.write_to_png(pngfilepath)
问题是:如何将代码更改为输出PDF,以便保留矢量格式;光栅化不能发生。
答案 0 :(得分:0)
将来自cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
的来电替换为cairo.PDFSurface(filename, width_in_points, height_in_points)
。我不知道PDF表面的默认缩放是什么,但希望您可以继续使用与以前相同的宽度和高度值。
因为你明确提到光栅化现在必须发生:开罗"尽力而为#34;不要光栅,但有些组合,cairo必须回退到光栅化的图像。您可以通过set_fallback_resolution
方法控制此图像的分辨率。
光栅化的原因包括无法用PDF表示的操作组合(抱歉,我不知道详细信息)以及是否将某些光栅化图像绘制到PDF表面。