【问题标题】:how to give a download link for generated reported pdf in django如何在 django 中为生成的报告 pdf 提供下载链接
【发布时间】:2012-04-13 04:07:27
【问题描述】:

我已通过views.py 中的以下代码从数据库中生成了一份 PDF 报告

 resp = HttpResponse(mimetype='application/pdf')
 txn = transaction.objects.order_by('user', 'id')
 report = txn_reports(queryset=txn)
 print report
 report.generate_by(PDFGenerator, filename='filename.pdf')'

此 PDF 文件正在保存在项目文件夹中,我不需要它,我希望它提示用户保存文件的位置。

我想在客户端的浏览器中提供此 PDF 的下载选项。如何在 HTML 中为此文件提供“另存为”功能,以便客户端可以下载 PDF 格式

【问题讨论】:

    标签: django django-templates django-views python-2.7


    【解决方案1】:

    获取 PDF 数据并作为 HttpReponse 发送。

    我过去做过类似的事情,用 pisa 生成报告:

    template = get_template("my_template.html")
    context = Context({"data": report_data})
    html  = template.render(context)
    result = StringIO.StringIO()
    pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
    

    对您来说真正重要的是最后一行,我们将 HttpResponse 与 pdf 文档一起返回。然后用户的浏览器会提示他保存它,或者如果支持则显示它。

    【讨论】:

    • 我在 django 中使用报告,我已将报告创建为 pdf,并且文件会自动保存在我的项目文件夹中,我不需要它而是想将该文件保存在临时区域并将其传递给用户
    【解决方案2】:

    您可以做的是将此pdf作为HttpResponse发送到浏览器,浏览器会自动打开pdf并为用户提供一种保存方式。

    【讨论】:

    • 我在 django 中使用报告,我已将报告创建为 pdf,并且文件会自动保存在我的项目文件夹中,我不需要它而是想将该文件保存在临时区域并将其传递给用户
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多