-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
51 lines (42 loc) · 1.77 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
if __name__ == "__main__":
import os
import tempfile
file_list = []
with tempfile.TemporaryDirectory() as temp_path:
for file in [f for f in os.listdir(os.getcwd()) if os.path.isfile(f)]:
src = os.path.realpath(file)
if src.endswith((".pdf", ".PDF")):
dst = f"{temp_path}\\{os.path.basename(src).replace(' ', '_')}"
import shutil
shutil.copy(src, dst)
file_list.append(dst)
from pikepdf import Pdf, PdfError
from pikepdf import _cpphelpers
from glob import glob
out_file = Pdf.new()
version = out_file.pdf_version
for item in sorted(file_list):
try:
with Pdf.open(item) as src:
version = max(version,src.pdf_version)
out_file.pages.extend(src.pages)
except PdfError:
import ctypes
ctypes.windll.user32.MessageBoxW(0, f"Request failed! Could not merge {item}, waaah", "Sad Pyrogie reports...", 0)
exit()
from datetime import datetime
datestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
out_path = f"_{datestamp}_result.pdf"
out_file.remove_unreferenced_resources()
out_file.save(out_path, min_version=version)
import subprocess
DETACHED_PROCESS = 0x00000008
subprocess.Popen(out_path,shell=True,creationflags=DETACHED_PROCESS)
"""
References:
- https://stackoverflow.com/questions/19859840/excluding-directories-in-os-walk
- https://stackoverflow.com/questions/3444645/merge-pdf-files
- https://github.com/pmaupin/pdfrw/blob/master/examples/cat.py
- http://mstamy2.github.io/PyPDF2/
- https://pikepdf.readthedocs.io/en/latest/
"""