49 lines
1.5 KiB
Python
Executable File
49 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from flask import Flask, request, send_file, send_from_directory, render_template
|
|
from flask_wtf.csrf import CSRFProtect
|
|
from xlsx_replacement import XlsxReplacement
|
|
from pdf_merger import PdfMerger
|
|
|
|
app = Flask(__name__, template_folder='html')
|
|
app.config['SECRET_KEY'] = 'TOP SECRET'
|
|
csrf = CSRFProtect(app)
|
|
|
|
|
|
@app.route('/pdf-test/pdf_replace', methods=['POST'])
|
|
def test_upload():
|
|
if request.files is None or len(request.files) == 0:
|
|
raise ValueError("Files required!")
|
|
|
|
if 'xlsx' not in request.files or 'pdf' not in request.files:
|
|
raise ValueError('Missing xlsx or docx')
|
|
|
|
xlsx = XlsxReplacement(request.files['xlsx'])
|
|
merger = PdfMerger(request.files['pdf'], xlsx)
|
|
out = merger.get_new_document()
|
|
return send_file(out, mimetype='application/pdf', attachment_filename=request.files['pdf'].filename)
|
|
|
|
|
|
@app.route("/pdf-test/<path:path>")
|
|
def static_files(path: str):
|
|
if path.endswith('.html'):
|
|
return render_template(path)
|
|
return send_from_directory('html', path)
|
|
|
|
|
|
@app.route('/pdf-test/testpage')
|
|
def test_page():
|
|
return """
|
|
<html><body>
|
|
<form action="/pdf-test/pdf_replace" method="post" enctype="multipart/form-data">
|
|
<label>Select PDF
|
|
<input type="file" name="pdf" id="pdf"></label>
|
|
<label>Select XLSX
|
|
<input type="file" name="xlsx" id="xlsx"></label>
|
|
<input type="submit" value="Upload" name="submit">
|
|
</form>
|
|
</body></html>"""
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run('0.0.0.0', 1212)
|