首先,我已经看到了其他线程,并且我已经尝试了几乎所有方法来解决此问题,但是...

当使用比萨将HTML页面呈现为PDF时,所述HTML中的图像会明显丢失。就是说,当页面呈现为HTML时,一切只是花花公子,但是当我使用比萨将输出切换为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,因为有人遇到类似问题-没有骰子。

有谁知道我在哪里错了吗?

最佳答案

自从我看了已经有一段时间了,但是我认为您必须使用lambda或functools。

例如

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)

关于python - Django中的Pisa(XHTML-> PDF)将不会以PDF显示图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7289592/

10-14 19:10
查看更多