我已经设法使用rsvg读取SVG,并使用Python通过Cairo将其输出到PNG。
尽管有许多类似的问题,但我还没有看到任何关于如何通过rsvg & cairo将SVG转换为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,以便保持矢量格式;不能发生光栅化。
发布于 2014-12-04 18:41:22
将您对cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)的调用替换为cairo.PDFSurface(filename, width_in_points, height_in_points)。我不知道PDF表面的默认缩放比例是多少,但希望您可以继续使用与以前相同的宽度和高度值。
既然您明确提到现在必须进行光栅化: Cairo“尽了最大努力”不对事物进行光栅化,但在某些组合中,cairo必须退回到光栅化的图像。您可以通过set_fallback_resolution方法控制此图像的分辨率。
光栅化的原因包括无法在PDF中表达的操作组合(对不起,我不知道细节),以及是否将一些光栅化的图像绘制到PDF表面。
https://stackoverflow.com/questions/27276048
复制相似问题