栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Flask将PDF作为自己的页面进行处理

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask将PDF作为自己的页面进行处理

给任何遇到此问题的人的注释,因为他们试图使用Flask从数据库提供PDF文件。当文件存储在数据库中时嵌入PDF并不像在静态文件夹中时那样简单。你必须使用该

make_response
函数并为其提供适当的标题,以便浏览器知道如何处理二进制PDF数据,而不是像通常那样从视图函数中返回它。这里有一些伪代码可以帮助你:

from flask import make_response@app.route('/docs/<id>')def get_pdf(id=None):    if id is not None:        binary_pdf = get_binary_pdf_data_from_database(id=id)        response = make_response(binary_pdf)        response.headers['Content-Type'] = 'application/pdf'        response.headers['Content-Disposition'] =  'inline; filename=%s.pdf' % 'yourfilename'        return response

如果你要下载文件而不是在浏览器中显示文件,则可以将“内容处置”从“内联”更改为“附件”。你也可以将此视图放在子域中,例如docs.yourapp.com而不是yourapp.com/docs。最后一步是将该文档实际嵌入浏览器中。在你想要的任何页面上,只需使用rawrgulmuffin的策略即可:

<embed src="/docs/pdfid8676etc" width="500" height="375">

你甚至可以使用Jinja2模板使src动态化。让我们将其放在doc.html中(注意大括号):

<embed src="/docs/{{doc_id}}">

然后在视图函数中,只需返回具有适当doc_id的渲染模板:

from flask import render_template@app.route('/<id>')def show_pdf(id=None):    if id is not None:        return render_template('doc.html', doc_id=id)

这会将用户从数据库中请求的文档嵌入到简单的GET请求中。希望这对任何在数据库中处理大量PDF的人有所帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号