【问题标题】:Django: change pdf file name using pisa reportlabDjango:使用比萨reportlab更改pdf文件名
【发布时间】:2011-04-11 09:24:21
【问题描述】:

我有一个打印 pdf 文件的 Django 应用程序。我想知道如何更改 pdf 文件输出名称。这是我的看法。

def write_pdf(template_src, context_dict):
    template = get_template(template_src)
    context = Context(context_dict)
    html  = template.render(context)
    result = StringIO.StringIO()

    pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
        response['Content-Disposition'] = 'attachment; filename=Client_Summary.pdf'
        return response
    return HttpResponse('We had some errors<pre>%s</pre>' % cgi.escape(html))


def client_summary_pdf(request, client_id):
    client = models.Client.objects.get(pk = client_id)
    items = client.storageitem_set.all()
    return write_pdf('client_summary.html',{
        'pagesize' : 'A4',
        'client':client,
        'items':items})

如您所见,我试过说response['Content-Disposition'] = 'attachment; filename=Client_Summary.pdf',但这不起作用。它基本上打开/保存没有名称的 pdf 文件。

【问题讨论】:

    标签: python django pdf views pisa


    【解决方案1】:

    您的代码中存在错误,因为您返回的时间有点过早:

    if not pdf.err:
        response = HttpResponse(result.getvalue(), mimetype='application/pdf')
        response['Content-Disposition'] = 'attachment; filename=Client_Summary.pdf'
        return response
    

    【讨论】:

    • 有没有办法解决这个问题?
    • 只需将第 9 行(在您的 sn-p 中)的 'return' 更改为 'response ='
    • 正是我想要的。可惜xhtml2pdf的文档太少了:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多