我正在尝试使用Flask制作一个简单的web应用程序,其中选择两个文档,然后执行一个函数(计算词法差异并生成图像的dif()函数),然后将图像显示给用户。在
我可以让图像显示是否有两个文档硬编码到函数中,但不能使用用户的文件选择。我知道我的upload.html文件不完整,但我不确定需要删除/添加/更改什么。在
routes.pyimport io
from app import app
from app.forms import LoginForm
from pdf_diff.document_differences import dif
from flask import request
from flask import send_file
#converts PIL image into a JPEG
def serve_pil_image(pil_img):
img_io = io.BytesIO()
pil_img.save(img_io, 'JPEG')
img_io.seek(0)
return send_file(img_io, mimetype='image/jpeg')
#shows the image from the dif function, using serve_pil_image
@app.route('/test')
def serve_img():
file1 = "path/to/pdf1"
file2 = "path/to/pdf2"
result = dif(file1, file2)
item = serve_pil_image(result)
return item
#trying to make user input work
@app.route("/upload", methods=["GET","POST"])
def uploading():
item = ''
if request.method =="POST":
file1 = request.form['file1']
file2 = request.form['file2']
if request.form['differences']:
result = dif(file1, file2)
item = serve_pil_image(result)
return item
return render_template('upload.html')
上传.html
^{pr2}$
文件_差异.pyimport difflib
import io
from tika import parser
import imgkit
import docxpy
from PIL import Image
#function which finds lexical differences between two documents after converting them into text files
def dif(filea, fileb):
if filea.endswith('.pdf'):
texta = pdf_to_text(filea)
if fileb.endswith('.pdf'):
textb = pdf_to_text(fileb)
difference = difflib.HtmlDiff().make_file(texta, textb)
difference_report = open('diff_table.html', 'w')
difference_report.write(difference)
difference_report.close()
image = imgkit.from_file('diff_table.html', False)
im = Image.open(io.BytesIO(image))
return im
但是当我发现我的文件时,我肯定什么都没发现,因为我发现了我的差异。对于如何正确格式化它,使之与Python脚本一致,我们将不胜感激:)