使用Python将rsg转换为PDF,rsvg&开罗

时间:2014-12-03 15:54:16

标签: cairo pycairo rsvg

我已经设法使用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,以便保留矢量格式;光栅化不能发生。

1 个答案:

答案 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表面。