current working example
This commit is contained in:
parent
95661fb73e
commit
f19c7861b0
14 changed files with 379 additions and 45 deletions
80
app.py
80
app.py
|
|
@ -1,13 +1,30 @@
|
|||
import shutil
|
||||
import os
|
||||
from flask import Flask, render_template, request, redirect, jsonify, send_from_directory
|
||||
from PyPDF2 import PdfReader, PdfWriter
|
||||
from pypdf import PdfReader, PdfWriter
|
||||
from pathlib import Path
|
||||
from pdf_util.pdf_util import pdf_util
|
||||
|
||||
import datetime as dt
|
||||
import logging
|
||||
import sys
|
||||
|
||||
# Setup Logging
|
||||
logging.basicConfig(
|
||||
# level=logging.ERROR,
|
||||
# level=logging.INFO,
|
||||
level=logging.DEBUG,
|
||||
format="Start: " + str(dt.datetime.now()).replace(" ", "_") + " | %(asctime)s [%(levelname)s] %(message)s",
|
||||
handlers=[
|
||||
logging.FileHandler("/var/log/" + str(dt.datetime.today().strftime('%Y-%m-%d')) + "_-_cron.log"),
|
||||
logging.StreamHandler(sys.stdout)
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
UPLOAD_FOLDER = 'uploads'
|
||||
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
|
||||
app.config['UPLOAD_FOLDER'] = 'uploads'
|
||||
|
||||
|
||||
@app.route('/')
|
||||
|
|
@ -36,27 +53,19 @@ def split_to_zip():
|
|||
return redirect(request.url)
|
||||
|
||||
if pdf_file:
|
||||
in_filename = pdf_file.filename
|
||||
in_filename = pdf_file.filename.rsplit('.', 1)[0]
|
||||
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)
|
||||
with open(filename, 'rb') as pdf_file:
|
||||
pdf_reader = PdfReader(pdf_file)
|
||||
num_pages = len(pdf_reader.pages)
|
||||
for page_num in range(num_pages):
|
||||
# Use pdf_utils Module to split File
|
||||
out_filenames = pdf_util(filename).split_pdf()
|
||||
logging.debug(out_filenames)
|
||||
|
||||
writer = PdfWriter()
|
||||
writer.add_page(pdf_reader.pages[page_num])
|
||||
|
||||
out_filename = '/tmp/split_pdf/' + in_filename + '_' + str(page_num) + '.pdf'
|
||||
with open(out_filename, 'wb') as outfile:
|
||||
writer.write(outfile)
|
||||
out_filenames.append(out_filename)
|
||||
|
||||
shutil.make_archive(in_filename.rsplit('.', 1)[0] + '_splitted', 'zip', "/tmp/split_pdf")
|
||||
zip_filename = in_filename.rsplit('.', 1)[0] + "_splitted.zip"
|
||||
logging.debug(in_filename)
|
||||
logging.debug(os.path.splitext(pdf_file.filename)[0])
|
||||
|
||||
shutil.make_archive(in_filename + '_splitted', 'zip', os.path.dirname(filename) + "/split_pdf")
|
||||
zip_filename = in_filename + "_splitted.zip"
|
||||
os.rename("/app/" + zip_filename, "/app/split/" + zip_filename)
|
||||
|
||||
for temp_file in out_filenames:
|
||||
|
|
@ -79,35 +88,24 @@ def merge_to_pdf():
|
|||
return redirect(request.url)
|
||||
|
||||
if pdf_file_1:
|
||||
filename_1 = os.path.join(app.config['UPLOAD_FOLDER'], pdf_file_1.filename)
|
||||
filename_1 = os.path.join(os.path.dirname(os.path.realpath(__file__)), 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)
|
||||
filename_2 = os.path.join(os.path.dirname(os.path.realpath(__file__)), app.config['UPLOAD_FOLDER'], pdf_file_2.filename)
|
||||
pdf_file_2.save(filename_2)
|
||||
|
||||
if pdf_file_1 and pdf_file_2:
|
||||
logging.debug(filename_1)
|
||||
logging.debug(filename_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)
|
||||
# Use pdf_utils Module to split File
|
||||
out_path = pdf_util(filename_1).merge_pdf_with(filename_2)
|
||||
logging.debug(out_path)
|
||||
os.rename(out_path, "/app/merge/merger.pdf")
|
||||
|
||||
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
|
||||
response = jsonify({"url": '/merge/merger.pdf', "name": os.path.splitext(os.path.basename(out_path))[0]})
|
||||
return response
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue