首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python、rsvg和Cairo将SVG转换为PDF

使用Python、rsvg和Cairo将SVG转换为PDF
EN

Stack Overflow用户
提问于 2014-12-03 23:54:16
回答 1查看 1.2K关注 0票数 0

我已经设法使用rsvg读取SVG,并使用Python通过Cairo将其输出到PNG。

尽管有许多类似的问题,但我还没有看到任何关于如何通过rsvg & cairo将SVG转换为PDF的文档。我知道命令行'rsvg'/'rsvp-convert‘工具,但我希望将该功能合并到我的Python代码中。也没有启动子进程。

为了举例,下面是我目前用来渲染PNG的基本用法:

代码语言:javascript
复制
   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,以便保持矢量格式;不能发生光栅化。

EN

回答 1

Stack Overflow用户

发布于 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表面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27276048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档