Django中的比萨(XHTML - > PDF)不会以PDF格式显示图像

时间:2011-09-02 21:55:46

标签: python django html2pdf pisa

首先,我已经看到了其他线程,我已经尝试了几乎所有尝试解决这个问题但是......

当使用Pisa将HTML页面呈现为PDF时,所述HTML中的图像显然会丢失。也就是说,当页面呈现为HTML时,一切都只是花花公子,但是当我使用Pisa将输出切换为PDF时,图像就会消失。

我发现最常见的事情就是创建一个链接回调函数:

def fetch_resources(uri, rel):
    path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
    return path

def my_view(request, variable1):
    html = render_to_string('template_goes_here.html', dict, context_instance=RequestContext(request))
    result = StringIO()
    pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")), dest=result, link_callback=fetch_resources)
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
    return HttpResponse('Pisa hates you! %s' % cgi.escape(html))

然而,这不起作用。 PDF出现了,很棒,但图像不存在。

我还读到了关于将HTML写入mkstemp的另一个线程的建议,通过命令行将其转换为PDF,然后输出HTML,也没有成功。

我甚至尝试安装PIL 1.1.16而不是1.1.17,因为有类似问题的人 - 没有骰子。

有没有人知道我在哪里出错?

2 个答案:

答案 0 :(得分:2)

我看了这个已经有一段时间了,但我认为你必须使用lambda或functools。

e.g。

links = lambda uri, rel: os.path.join(settings.MEDIA_ROOT, 
    uri.replace(settings.MEDIA_URL, ''))


pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")),
    dest=result, link_callback=links)

答案 1 :(得分:0)

我认为这可能会有所帮助。在我的情况下,Windows使用斜杠是罪魁祸首。 https://stackoverflow.com/a/12644633/1236599