Compare commits
3 Commits
f19c7861b0
...
f4b8029593
Author | SHA1 | Date |
---|---|---|
Niklas Müller | f4b8029593 | |
Niklas Müller | 376fafa171 | |
Niklas Müller | 6cb54c31ba |
2
app.py
2
app.py
|
@ -14,7 +14,7 @@ logging.basicConfig(
|
|||
# level=logging.ERROR,
|
||||
# level=logging.INFO,
|
||||
level=logging.DEBUG,
|
||||
format="Start: " + str(dt.datetime.now()).replace(" ", "_") + " | %(asctime)s [%(levelname)s] %(message)s",
|
||||
format=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)
|
||||
|
|
|
@ -1,9 +1,48 @@
|
|||
from pypdf import PdfReader, PdfWriter
|
||||
import uuid
|
||||
import os
|
||||
import shutil
|
||||
|
||||
import datetime as dt
|
||||
import logging
|
||||
import sys
|
||||
|
||||
|
||||
from pdf_util.pdf_util import pdf_util
|
||||
|
||||
|
||||
# Setup Logging
|
||||
logging.basicConfig(
|
||||
# level=logging.ERROR,
|
||||
# level=logging.INFO,
|
||||
level=logging.DEBUG,
|
||||
format=str(dt.datetime.now()).replace(" ", "_") + " | %(asctime)s [%(levelname)s] %(message)s",
|
||||
handlers=[
|
||||
logging.FileHandler("/var/log/" + str(dt.datetime.today().strftime('%Y-%m-%d')) + "_-_pdf_project_manager.log"),
|
||||
logging.StreamHandler(sys.stdout)
|
||||
]
|
||||
)
|
||||
|
||||
base_path = "/app/projects/"
|
||||
|
||||
class pdf_project_manager:
|
||||
def __init__(self):
|
||||
self.uuid = str(uuid.uuid4())
|
||||
os.makedirs("/app/projects/" + self.uuid, exist_ok=True)
|
||||
self.pdf_init = False
|
||||
self.project_name = ""
|
||||
os.makedirs(base_path + self.uuid, exist_ok=True)
|
||||
|
||||
|
||||
"""
|
||||
def add_pdf(self, pdf_path):
|
||||
if self.pdf_init:
|
||||
shutil.copyfile(pdf_path, base_path + self.uuid + "/complete.pdf")
|
||||
else:
|
||||
shutil.copyfile(pdf_path, base_path + self.uuid + "/tmp.pdf")
|
||||
pdf_util(base_path + self.uuid + "/complete.pdf").merge_pdf_with_and_location(base_path + self.uuid + "/tmp.pdf", base_path + self.uuid + "/tmp_complete.pdf")
|
||||
shutil.copyfile(base_path + self.uuid + "/tmp_complete.pdf", base_path + self.uuid + "/complete.pdf")
|
||||
os.remove(base_path + self.uuid + "/tmp_complete.pdf")
|
||||
os.remove(base_path + self.uuid + "/tmp.pdf")
|
||||
|
||||
# Splitt files in all single Pages in Subdirectory...
|
||||
"""
|
|
@ -1,6 +1,23 @@
|
|||
import os
|
||||
from pypdf import PdfReader, PdfWriter
|
||||
|
||||
import datetime as dt
|
||||
import logging
|
||||
import sys
|
||||
|
||||
# Setup Logging
|
||||
logging.basicConfig(
|
||||
# level=logging.ERROR,
|
||||
# level=logging.INFO,
|
||||
level=logging.DEBUG,
|
||||
format=str(dt.datetime.now()).replace(" ", "_") + " | %(asctime)s [%(levelname)s] %(message)s",
|
||||
handlers=[
|
||||
logging.FileHandler("/var/log/" + str(dt.datetime.today().strftime('%Y-%m-%d')) + "_-_pdf_util.log"),
|
||||
logging.StreamHandler(sys.stdout)
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
class pdf_util:
|
||||
def __init__(self, file_path):
|
||||
self.file_path = file_path
|
||||
|
@ -8,9 +25,9 @@ class pdf_util:
|
|||
self.file_name_wo_extension = os.path.splitext(os.path.basename(file_path))[0]
|
||||
|
||||
|
||||
def split_pdf(self):
|
||||
def split_pdf_with_location(self, output_filepath, no_names=False):
|
||||
out_filenames = []
|
||||
os.makedirs(os.path.dirname(self.file_path) + "/split_pdf", exist_ok=True)
|
||||
os.makedirs(os.path.dirname(output_filepath), exist_ok=True)
|
||||
with open(self.file_path, 'rb') as pdf_file:
|
||||
pdf_reader = PdfReader(pdf_file)
|
||||
num_pages = len(pdf_reader.pages)
|
||||
|
@ -19,16 +36,25 @@ class pdf_util:
|
|||
writer = PdfWriter()
|
||||
writer.add_page(pdf_reader.pages[page_num])
|
||||
|
||||
out_filename = os.path.dirname(self.file_path) + '/split_pdf/' + self.file_name_wo_extension + '_' + str(page_num + 1) + '.pdf'
|
||||
if no_names:
|
||||
out_filename = os.path.dirname(output_filepath) + '/' + str(page_num + 1) + '.pdf'
|
||||
else:
|
||||
out_filename = os.path.dirname(output_filepath) + '/' + self.file_name_wo_extension + '_' + str(page_num + 1) + '.pdf'
|
||||
|
||||
with open(out_filename, 'wb') as outfile:
|
||||
writer.write(outfile)
|
||||
out_filenames.append(out_filename)
|
||||
|
||||
return out_filenames
|
||||
|
||||
# Deprecate when pdf_project_manager takes effect
|
||||
def split_pdf(self):
|
||||
os.makedirs(os.path.dirname(self.file_path) + "/split_pdf", exist_ok=True)
|
||||
return self.split_pdf_with_location(os.path.dirname(self.file_path) + "/split_pdf/", False)
|
||||
|
||||
def merge_pdf_with(self, merge_file_path, merged_name="merged"):
|
||||
os.makedirs(os.path.dirname(self.file_path) + "/merge_pdf", exist_ok=True)
|
||||
|
||||
def merge_pdf_with_and_location(self, merge_file_path, output_filepath):
|
||||
os.makedirs(os.path.dirname(output_filepath), exist_ok=True)
|
||||
pdf_reader_1 = PdfReader(self.file_path)
|
||||
pdf_reader_2 = PdfReader(merge_file_path)
|
||||
writer = PdfWriter()
|
||||
|
@ -39,8 +65,14 @@ class pdf_util:
|
|||
for page_num in range(len(pdf_reader_2.pages)):
|
||||
writer.add_page(pdf_reader_2.pages[page_num])
|
||||
|
||||
out_path = os.path.dirname(self.file_path) + "/merge_pdf" + '/merger.pdf'
|
||||
with open(out_path, 'wb') as outfile:
|
||||
with open(output_filepath, 'wb') as outfile:
|
||||
writer.write(outfile)
|
||||
|
||||
return out_path
|
||||
return output_filepath
|
||||
|
||||
# Deprecate when pdf_project_manager takes effect
|
||||
def merge_pdf_with(self, merge_file_path, merged_name="merged"):
|
||||
os.makedirs(os.path.dirname(self.file_path) + "/merge_pdf", exist_ok=True)
|
||||
return self.merge_pdf_with_and_location(merge_file_path, os.path.dirname(self.file_path) + "/merge_pdf" + '/merger.pdf')
|
||||
|
||||
|
||||
|
|
|
@ -13,3 +13,14 @@ def test_folder_creation():
|
|||
print(test_pdf_project_manager.uuid)
|
||||
assert os.path.isdir('/app/projects/' + test_pdf_project_manager.uuid)
|
||||
|
||||
|
||||
def test_Projecttest_1():
|
||||
|
||||
"""
|
||||
test_project = pdf_project_manager()
|
||||
print(test_pdf_project_manager.uuid)
|
||||
assert os.path.isdir('/app/projects/' + test_pdf_project_manager.uuid)
|
||||
"""
|
||||
|
||||
assert True
|
||||
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
import pytest
|
||||
import os
|
||||
import shutil
|
||||
from pdf_util.pdf_util import pdf_util
|
||||
|
||||
def test_split_pages():
|
||||
def test_split_pdf():
|
||||
# Single Pages
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_1_page.pdf").split_pdf()
|
||||
print(test_file)
|
||||
|
||||
print(os.stat("/app/tests/sample_pdfs/split_pdf/sample_1_page_1.pdf").st_size)
|
||||
assert os.stat("/app/tests/sample_pdfs/split_pdf/sample_1_page_1.pdf").st_size == 69339
|
||||
|
||||
# Two Pages
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_2_page.pdf").split_pdf()
|
||||
print(test_file)
|
||||
|
||||
print(os.stat("/app/tests/sample_pdfs/split_pdf/sample_2_page_1.pdf").st_size)
|
||||
assert os.stat("/app/tests/sample_pdfs/split_pdf/sample_2_page_1.pdf").st_size == 1804
|
||||
print(os.stat("/app/tests/sample_pdfs/split_pdf/sample_2_page_2.pdf").st_size)
|
||||
|
@ -22,7 +21,6 @@ def test_split_pages():
|
|||
# Ten Pages
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_10_page.pdf").split_pdf()
|
||||
print(test_file)
|
||||
|
||||
print(os.stat("/app/tests/sample_pdfs/split_pdf/sample_10_page_1.pdf").st_size)
|
||||
assert os.stat("/app/tests/sample_pdfs/split_pdf/sample_10_page_1.pdf").st_size == 3167
|
||||
print(os.stat("/app/tests/sample_pdfs/split_pdf/sample_10_page_2.pdf").st_size)
|
||||
|
@ -44,10 +42,131 @@ def test_split_pages():
|
|||
print(os.stat("/app/tests/sample_pdfs/split_pdf/sample_10_page_10.pdf").st_size)
|
||||
assert os.stat("/app/tests/sample_pdfs/split_pdf/sample_10_page_10.pdf").st_size == 3789
|
||||
|
||||
shutil.rmtree("/app/tests/sample_pdfs/split_pdf/")
|
||||
|
||||
def test_merge_with():
|
||||
# Write test code to verify the behavior of the merge_with method
|
||||
pass
|
||||
|
||||
def test_split_pdf_and_location():
|
||||
# Single Pages
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_1_page.pdf").split_pdf_with_location("/tmp/test_directory/", False)
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/sample_1_page_1.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_1_page_1.pdf").st_size == 69339
|
||||
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_1_page.pdf").split_pdf_with_location("/tmp/test_directory/", True)
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/1.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/1.pdf").st_size == 69339
|
||||
|
||||
shutil.rmtree("/tmp/test_directory/")
|
||||
|
||||
|
||||
# Two Pages
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_2_page.pdf").split_pdf_with_location("/tmp/test_directory/", False)
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/sample_2_page_1.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_2_page_1.pdf").st_size == 1804
|
||||
print(os.stat("/tmp/test_directory/sample_2_page_2.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_2_page_2.pdf").st_size == 1405
|
||||
|
||||
# Two Pages
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_2_page.pdf").split_pdf_with_location("/tmp/test_directory/", True)
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/1.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/1.pdf").st_size == 1804
|
||||
print(os.stat("/tmp/test_directory/2.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/2.pdf").st_size == 1405
|
||||
|
||||
shutil.rmtree("/tmp/test_directory/")
|
||||
|
||||
|
||||
# Ten Pages
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_10_page.pdf").split_pdf_with_location("/tmp/test_directory/", False)
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_1.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_1.pdf").st_size == 3167
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_2.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_2.pdf").st_size == 2888
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_3.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_3.pdf").st_size == 6670
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_4.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_4.pdf").st_size == 3043
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_5.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_5.pdf").st_size == 9968
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_6.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_6.pdf").st_size == 5367
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_7.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_7.pdf").st_size == 10093
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_8.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_8.pdf").st_size == 8578
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_9.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_9.pdf").st_size == 30188
|
||||
print(os.stat("/tmp/test_directory/sample_10_page_10.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/sample_10_page_10.pdf").st_size == 3789
|
||||
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_10_page.pdf").split_pdf_with_location("/tmp/test_directory/", True)
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/1.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/1.pdf").st_size == 3167
|
||||
print(os.stat("/tmp/test_directory/2.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/2.pdf").st_size == 2888
|
||||
print(os.stat("/tmp/test_directory/3.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/3.pdf").st_size == 6670
|
||||
print(os.stat("/tmp/test_directory/4.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/4.pdf").st_size == 3043
|
||||
print(os.stat("/tmp/test_directory/5.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/5.pdf").st_size == 9968
|
||||
print(os.stat("/tmp/test_directory/6.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/6.pdf").st_size == 5367
|
||||
print(os.stat("/tmp/test_directory/7.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/7.pdf").st_size == 10093
|
||||
print(os.stat("/tmp/test_directory/8.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/8.pdf").st_size == 8578
|
||||
print(os.stat("/tmp/test_directory/9.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/9.pdf").st_size == 30188
|
||||
print(os.stat("/tmp/test_directory/10.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/10.pdf").st_size == 3789
|
||||
|
||||
shutil.rmtree("/tmp/test_directory/")
|
||||
|
||||
|
||||
def test_merge_pdf_with():
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_1_page.pdf").merge_pdf_with("/app/tests/sample_pdfs/sample_2_page.pdf")
|
||||
print(test_file)
|
||||
print(os.stat("/app/tests/sample_pdfs/merge_pdf/merger.pdf").st_size)
|
||||
assert os.stat("/app/tests/sample_pdfs/merge_pdf/merger.pdf").st_size == 71761
|
||||
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_1_page.pdf").merge_pdf_with("/app/tests/sample_pdfs/sample_10_page.pdf")
|
||||
print(test_file)
|
||||
print(os.stat("/app/tests/sample_pdfs/merge_pdf/merger.pdf").st_size)
|
||||
assert os.stat("/app/tests/sample_pdfs/merge_pdf/merger.pdf").st_size == 115044
|
||||
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_2_page.pdf").merge_pdf_with("/app/tests/sample_pdfs/sample_10_page.pdf")
|
||||
print(test_file)
|
||||
print(os.stat("/app/tests/sample_pdfs/merge_pdf/merger.pdf").st_size)
|
||||
assert os.stat("/app/tests/sample_pdfs/merge_pdf/merger.pdf").st_size == 48427
|
||||
|
||||
shutil.rmtree("/app/tests/sample_pdfs/merge_pdf/")
|
||||
|
||||
|
||||
def test_merge_pdf_with_and_location():
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_1_page.pdf").merge_pdf_with_and_location("/app/tests/sample_pdfs/sample_2_page.pdf", "/tmp/test_directory/merged_file.pdf")
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/merged_file.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/merged_file.pdf").st_size == 71761
|
||||
shutil.rmtree("/tmp/test_directory/")
|
||||
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_1_page.pdf").merge_pdf_with_and_location("/app/tests/sample_pdfs/sample_10_page.pdf", "/tmp/test_directory/merge_pdf/merger.pdf")
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/merge_pdf/merger.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/merge_pdf/merger.pdf").st_size == 115044
|
||||
shutil.rmtree("/tmp/test_directory/")
|
||||
|
||||
test_file = pdf_util("/app/tests/sample_pdfs/sample_2_page.pdf").merge_pdf_with_and_location("/app/tests/sample_pdfs/sample_10_page.pdf", "/tmp/test_directory/merge_pdf/bigfile.pdf")
|
||||
print(test_file)
|
||||
print(os.stat("/tmp/test_directory/merge_pdf/bigfile.pdf").st_size)
|
||||
assert os.stat("/tmp/test_directory/merge_pdf/bigfile.pdf").st_size == 48427
|
||||
|
||||
shutil.rmtree("/tmp/test_directory/")
|
||||
|
||||
def test_rotate_pages():
|
||||
# Write test code to verify the behavior of the rotate_pages method
|
||||
|
|
Loading…
Reference in New Issue