我正在尝试从项目目录中以HTML格式呈现(预览)存储的Word或PDF文件
例如,我有一个用户,他的简历存储在他的帐户中。现在我想在他的账户页面上给他一个简历预览。它可以是doc、docx或pdf。如何在Python/Flask中返回msword或pdf数据,以便在iframe或Embedded中以HTML/Jinja2呈现。这是我的密码
from flask import render_template, url_for, flash, redirect, request, abort, jsonify,session, send_file
import os
import mimetypes
@app.route("/account", methods=['GET', 'POST'])
@login_required
def account():
resume = current_user.resume
resumefile = downloadresume()
return render_template('account.html', pagetitle='Account', profile_pic=profile_pic, form=form, resume=resume, resumefile = resumefile)
@app.route("/account/downloadresume", methods=['GET', 'POST'])
def downloadresume():
filename = current_user.resume
mime = mimetypes.MimeTypes().guess_type(filename)[0]
if mime in ["application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/msword"]:
# return filename.data
return send_file(resume.data, as_attachment=False)
Jinja/HTML
<iframe src="{{ resumefile }}"></iframe>
Tags:
有两种可能的方法来实现这一点。您没有单一的方法来呈现pdf和docx文件
对于pdf文件:
用于docx文件
我不确定Word文档,但我知道PDFjs库将能够加载PDF并将其呈现到画布中
可以在这里找到它的用法示例:https://jsfiddle.net/pdfjs/9engc9mw/
因为它是在前端完成的,所以您只需要确保PDF文件是可访问的。对于Word文件,我相信您可以将其转换为PDF,但是您可能会丢失一些功能