【问题标题】:Pisa (XHTML -> PDF) in Django will not display images in PDFDjango 中的 Pisa (XHTML -> PDF) 不会以 PDF 格式显示图像
【发布时间】:2011-11-09 12:22:07
【问题描述】:

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

当使用 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,因为有人遇到类似问题 - 没有骰子。

有人知道我在哪里出错了吗?

【问题讨论】:

  • 不要使用 Pisa,使用 xhtml2pdf 这是项目的延续。
  • 我也遇到了同样的问题。Mkstemp 也无济于事。当我们在 html 中设置图像尺寸时,Pisa 不会渲染图像。因此尝试从仅包含图像的 html 生成 pdf。然后继续添加其他 html 内容。最后我使用 HTMLTODOC 生成 pdf ->htmldoc.org

标签: python django html2pdf pisa


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我已经有一段时间没有看到这个了,但我认为你必须使用 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)
    

    【讨论】:

    • 再看一遍,没有理由会有所不同。不确定为什么给出的示例不起作用。
    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    相关资源
    最近更新 更多