【发布时间】:2010-10-21 16:46:12
【问题描述】:
我正在使用Pisa/XHTML2PDF 在 Django 中动态生成 PDF。不幸的是,我还需要包含 SVG 图像,我认为这不是一件容易的事。
a) 将 SVG 转换为 PNG / JPG(在 Python 中)或 b) 在比萨的 PDF 导出中包含 SVG 的最佳方法是什么?
【问题讨论】:
标签: python pdf pdf-generation svg pisa
我正在使用Pisa/XHTML2PDF 在 Django 中动态生成 PDF。不幸的是,我还需要包含 SVG 图像,我认为这不是一件容易的事。
a) 将 SVG 转换为 PNG / JPG(在 Python 中)或 b) 在比萨的 PDF 导出中包含 SVG 的最佳方法是什么?
【问题讨论】:
标签: python pdf pdf-generation svg pisa
还有基于 Java 的 Apache Batik SVG toolkit。
在similar question regarding C# 中建议使用command line version of Inkscape。
对于 Python,这里有一个来自this discussion thread 的有用建议:
import rsvg
from gtk import gdk
h = rsvg.Handle('svg-file.svg')
pixbuf = h.get_pixbuf()
pixbuf.save('foobar.png', 'png')
Lukasz 建议的步骤from gtk import gdk 是必需的,并且必须在创建 pixbuf 之前,否则您将无法获得save 方法,正如the original poster 所观察到的那样。
【讨论】:
“我让 rsvg 工作了,但是当我尝试保存时,我得到了以下结果:AttributeError: 'gtk.gdk.Pixbuf' object has no attribute 'save' – Nick Sergeant 2009 年 4 月 25 日 0:10”
您需要导入 gdk 才能访问 pixbuf 方法:
import rsvg
from gtk import gdk
h = rsvg.Handle('svg-file.svg')
pixbuf = h.get_pixbuf()
pixbuf.save('foobar.png', 'png')
并从包含 svg 数据的字符串转换:
import rsvg
from gtk import gdk
h = rsvg.Handle()
h.write(svg_string)
h.close()
pixbuf = h.get_pixbuf()
pixbuf.save('foobar.png', 'png')
【讨论】: