【问题标题】:Convert SVG to PDF using Python, rsvg & Cairo使用 Python、rsvg 和 Cairo 将 SVG 转换为 PDF
【发布时间】:2014-12-03 15:54:15
【问题描述】:

我已经设法使用 rsvg 读取 SVG,并通过 Cairo 在 Python 中将其输出到 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,从而保持矢量格式;不得进行光栅化。

【问题讨论】:

    标签: cairo pycairo rsvg


    【解决方案1】:

    将您对cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h) 的呼叫替换为cairo.PDFSurface(filename, width_in_points, height_in_points)。我不知道 PDF 表面的默认缩放比例是多少,但希望您可以继续使用与以前相同的宽度和高度值。

    既然您明确提到现在必须进行光栅化:Cairo“尽其所能”不光栅化事物,但在某些组合中 cairo 必须退回到光栅化图像。您可以通过set_fallback_resolution 方法控制此图像的分辨率。

    光栅化的原因包括无法在 PDF 中表达的操作组合(抱歉,我不知道细节)以及是否在 PDF 表面绘制了一些光栅化图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      相关资源
      最近更新 更多