如何在 django 中为生成的报告 pdf 提供下载链接

Posted

技术标签:

【中文标题】如何在 django 中为生成的报告 pdf 提供下载链接【英文标题】:how to give a download link for generated reported pdf in django 【发布时间】: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 格式

【问题讨论】:

【参考方案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,并且文件会自动保存在我的项目文件夹中,我不需要它而是想将该文件保存在临时区域并将其传递给用户

以上是关于如何在 django 中为生成的报告 pdf 提供下载链接的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中为 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?

我们如何在 Flutter 中为集成测试生成 json 报告?

如何在 Django 1.4 中为本地开发提供静态文件

如何使用 thymeleaf 作为模板引擎生成 pdf 报告? [关闭]

django 动态生成PDF文件

如何在 django 中使用 xhtml2pdf 生成的 PDF 中显示表情符号字符?