added PDF Merger
This commit is contained in:
parent
52dc67adc1
commit
5245997352
4 changed files with 120 additions and 44 deletions
68
app.py
68
app.py
|
|
@ -1,26 +1,32 @@
|
|||
from flask import Flask, render_template, request, redirect, url_for, jsonify, send_from_directory
|
||||
import os
|
||||
from PyPDF2 import PdfReader, PdfWriter
|
||||
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import os
|
||||
from flask import Flask, render_template, request, redirect, jsonify, send_from_directory
|
||||
from PyPDF2 import PdfReader, PdfWriter
|
||||
from pathlib import Path
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
UPLOAD_FOLDER = 'uploads'
|
||||
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
|
||||
@app.route('/split/<path:path>')
|
||||
def send_report(path):
|
||||
return send_from_directory('split', path)
|
||||
|
||||
@app.route('/split', methods=['POST'])
|
||||
def split_file():
|
||||
|
||||
@app.route('/merge/<path:path>')
|
||||
def send_merge(path):
|
||||
return send_from_directory('merge', path)
|
||||
|
||||
|
||||
@app.route('/split_to_zip', methods=['POST'])
|
||||
def split_to_zip():
|
||||
if 'pdf' not in request.files:
|
||||
return redirect(request.url)
|
||||
|
||||
|
|
@ -33,15 +39,12 @@ def split_file():
|
|||
in_filename = pdf_file.filename
|
||||
filename = os.path.join(app.config['UPLOAD_FOLDER'], pdf_file.filename)
|
||||
pdf_file.save(filename)
|
||||
|
||||
|
||||
out_filenames = []
|
||||
Path("/tmp/split_pdf").mkdir(parents=True, exist_ok=True)
|
||||
# Process the PDF file (e.g., extract text)
|
||||
with open(filename, 'rb') as pdf_file:
|
||||
pdf_reader = PdfReader(pdf_file)
|
||||
num_pages = len(pdf_reader.pages)
|
||||
text = ''
|
||||
for page_num in range(num_pages):
|
||||
|
||||
writer = PdfWriter()
|
||||
|
|
@ -63,5 +66,50 @@ def split_file():
|
|||
# response.headers.add("Access-Control-Allow-Origin", "*")
|
||||
return response
|
||||
|
||||
|
||||
@app.route('/merge_to_pdf', methods=['POST'])
|
||||
def merge_to_pdf():
|
||||
if 'pdf_1' not in request.files or 'pdf_2' not in request.files:
|
||||
return redirect(request.url)
|
||||
|
||||
pdf_file_1 = request.files['pdf_1']
|
||||
pdf_file_2 = request.files['pdf_2']
|
||||
|
||||
if pdf_file_1.filename == '' or pdf_file_2.filename == '':
|
||||
return redirect(request.url)
|
||||
|
||||
if pdf_file_1:
|
||||
filename_1 = os.path.join(app.config['UPLOAD_FOLDER'], pdf_file_1.filename)
|
||||
pdf_file_1.save(filename_1)
|
||||
|
||||
if pdf_file_2:
|
||||
filename_2 = os.path.join(app.config['UPLOAD_FOLDER'], pdf_file_2.filename)
|
||||
pdf_file_2.save(filename_2)
|
||||
|
||||
if pdf_file_1 and pdf_file_2:
|
||||
|
||||
with open(filename_1, 'rb') as pdf_file_1, open(filename_2, 'rb') as pdf_file_2:
|
||||
pdf_reader_1 = PdfReader(pdf_file_1)
|
||||
pdf_reader_2 = PdfReader(pdf_file_2)
|
||||
|
||||
Path("/tmp/merge_pdf").mkdir(parents=True, exist_ok=True)
|
||||
writer = PdfWriter()
|
||||
|
||||
for page_num in range(len(pdf_reader_1.pages)):
|
||||
writer.add_page(pdf_reader_1.pages[page_num])
|
||||
|
||||
for page_num in range(len(pdf_reader_2.pages)):
|
||||
writer.add_page(pdf_reader_2.pages[page_num])
|
||||
|
||||
out_filename = '/app/merge/merger.pdf'
|
||||
with open(out_filename, 'wb') as outfile:
|
||||
writer.write(outfile)
|
||||
|
||||
response = jsonify({"url": '/merge/merger.pdf', "name": 'merge.pdf'})
|
||||
# response.headers.add("Access-Control-Allow-Origin", "*")
|
||||
return response
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
app.run(debug=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue