如何在 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 报告?