在我的应用程序中,我正在渲染PDF文件并将其作为响应传回。出于这个目的,我使用了flask_weasyprint' s render_pdf
,这正是这样做的:
def render_pdf(html, stylesheets=None, download_filename=None):
if not hasattr(html, 'write_pdf'):
html = HTML(html)
pdf = html.write_pdf(stylesheets=stylesheets)
response = current_app.response_class(pdf, mimetype='application/pdf')
if download_filename:
response.headers.add('Content-Disposition', 'attachment', filename=download_filename)
return response
我现在需要渲染一个模板+将渲染的pdf作为下载返回。像
这样的东西@app.route("/view")
def view() :
resp1 = render_pdf(HTML(string="<p>Render me!</p>"), download_filename = "test.pdf")
resp2 = render_template("test.html")
return resp1, resp2
有没有办法实现这个目标?任何解决方法?
答案 0 :(得分:0)
我不确定这是否可以在后端解决,你想在一个请求后发送两个http响应。应该可以吗? (我真的不知道)客户不应该做出两个回复吗? (JavaScript的)。
在render_template调用中返回一个选项javascript datablob。 也许是这样的? (另):
fileData = new Blob([pdf_data_here], { type: 'application/pdf' });
fileUrl = URL.createObjectURL(fileData);
window.location.assign(fileUrl);
或者只是使用window.location.assign()函数生成第二个请求。
或者将数据base64编码为href属性?