-
Notifications
You must be signed in to change notification settings - Fork 2
/
zip2pdf.py
90 lines (67 loc) · 2.21 KB
/
zip2pdf.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from os import walk, mkdir
from shutil import move, rmtree
import zipfile
from PIL import Image
from natsort import natsorted
from functools import cmp_to_key
def unpack_zips_from_zip_folder(foldername="./zip"):
zips = files_list_from_folder(foldername)
counter = 0
print("ZIPs left: ", end="")
for zip in zips:
print("[ ]", end="")
print("\n___________", end="")
# each archive
for zip in zips:
with zipfile.ZipFile(foldername + "/" + zip, "r") as zip_ref:
zip_ref.extractall("./temp")
# unziped to ./temp
temp_files = files_list_from_folder("./temp")
# now move and rename every file in temp folder to images with index [counter] name
for file in temp_files:
file_extension = file.split(".")[-1]
move("temp/" + file, "images/" + str(counter) + "." + file_extension)
counter += 1
print("[✓]", end="")
print("\nDone. Check /images folder or result.pdf")
def aliens():
print(open(".aliens", "r").read(), end="\n")
def files_list_from_folder(foldername="./zip"):
files = []
for dirpath, dirnames, filenames in walk(foldername):
files.extend(filenames)
break
return natsorted(files)
def image_open(name):
image = Image.open(name)
try:
image.load() # required for png.split()
rgb = Image.new("RGB", image.size, (255, 255, 255))
rgb.paste(image, mask=image.split()[3]) # 3 is the alpha channel
except Exception:
return image
return rgb
def to_pdf():
images_names = files_list_from_folder("./images")
first_image = image_open("./images/" + images_names[0])
images = list(image_open("./images/" + image_name)
for image_name in images_names[1:])
first_image.save("result.pdf", "PDF", resolution=100.0,
save_all=True, append_images=images)
def clear_folders():
try:
rmtree("images")
except Exception:
pass
try:
rmtree("temp")
except Exception:
pass
mkdir("images")
if __name__ == "__main__":
aliens()
clear_folders()
unpack_zips_from_zip_folder()
to_pdf()
print("Press [ENTER] to exit")
input()