【问题标题】:How to convert SVG images for use with Pisa / XHTML2PDF?如何转换 SVG 图像以用于 Pisa / XHTML2PDF?
【发布时间】: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


    【解决方案1】:

    还有基于 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。从快速谷歌搜索看来,其他人在“获取”rsvg 时也有类似的问题。这是 Python 2.6 唯一的东西吗?
    • Rsvg (en.wikipedia.org/wiki/Librsvg) 是 GNOME 项目的一部分。这里有一个链接 (mwusers.com/forums/showthread.php?p=27924),指向有关在 Windows 上安装它的讨论。
    • 我实际上在 Ubuntu 上,并且在 8.10 上安装时遇到了相当困难的时间。看来我必须安装 python-gnome2-desktop,但我不确定。我在这里打开了一个 SO 帖子:stackoverflow.com/questions/787812/…
    • 啊,好吧,我得到了 rsvg 的工作,但这是我尝试保存时得到的结果:AttributeError: 'gtk.gdk.Pixbuf' object has no attribute 'save'
    • Google 对此的评价是:“你有一个旧版本的 PyGTK-2。save() 是 James 于 2002 年 11 月 16 日添加的,所以它似乎是包含在 1.99.14 中。” mail-archive.com/pygtk@daa.com.au/msg05850.html
    【解决方案2】:

    “我让 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')
    

    【讨论】:

    • 我将您的提示添加到另一个答案中,希望帖子结果更具可读性。
    • @Lukasz 如何使用 pip 安装 rsvg?
    猜你喜欢
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 2011-07-30
    • 1970-01-01
    • 2016-04-25
    • 2022-11-10
    相关资源
    最近更新 更多