This repository has been archived by the owner on Jan 7, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathconvert_to_pdf.py
78 lines (59 loc) · 3.07 KB
/
convert_to_pdf.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
# -*- coding: utf-8 -*-
import argparse
import os
from PIL import Image
from rich import print
from rich.progress import Progress
ROOT_FOLDER = "DL SushiScan"
def convert_to_pdf(folder_to_convert, quality):
main_folder_path = os.path.join(ROOT_FOLDER, folder_to_convert)
if not os.path.exists(main_folder_path):
print(f"[bold red]Le dossier '{main_folder_path}' n'existe pas.[/bold red]")
exit()
subfolders = [f.path for f in os.scandir(main_folder_path) if f.is_dir()]
if not subfolders:
print("[bold yellow]Aucun sous-dossier trouvé dans le dossier principal.[/bold yellow]")
exit()
with Progress() as progress:
task = progress.add_task("[cyan]Conversion des sous-dossiers...", total=len(subfolders))
for subfolder in subfolders:
subfolder_name = os.path.basename(subfolder)
image_files = [f for f in os.listdir(subfolder) if os.path.isfile(os.path.join(subfolder, f))]
image_files.sort()
if not image_files:
print(f"[bold yellow]Aucune image trouvée dans le sous-dossier '{subfolder_name}'.[/bold yellow]")
progress.advance(task)
continue
try:
first_image = Image.open(os.path.join(subfolder, image_files[0]))
other_images = [
Image.open(os.path.join(subfolder, image)).convert('RGB') for image in image_files[1:]
]
output_folder = os.path.join(ROOT_FOLDER, folder_to_convert + " - PDF")
if not os.path.exists(output_folder):
os.makedirs(output_folder)
output_pdf_path = os.path.join(output_folder, f"{subfolder_name}.pdf")
first_image.save(
output_pdf_path,
save_all=True,
append_images=other_images,
quality=quality,
)
print(f"[bold green]Les images du sous-dossier '{subfolder_name}' ont été fusionnées dans '{output_pdf_path}'.[/bold green]")
except Exception as e:
print(f"[bold red]Erreur lors de la conversion du sous-dossier '{subfolder_name}' : {e}[/bold red]")
finally:
first_image.close()
for img in other_images:
img.close()
progress.advance(task)
def main():
parser = argparse.ArgumentParser(description="Convertir des images en PDF avec une qualité choisie.")
parser.add_argument("-f", "--folder", required=True, help="Nom du dossier à convertir (doit être dans le répertoire racine).")
parser.add_argument("-q", "--quality", type=int, default=95, help="Qualité des PDF (par défaut : 95, minimum : 1, maximum : 100).")
args = parser.parse_args()
print("[bold cyan]Conversion en cours...[/bold cyan]")
convert_to_pdf(args.folder, args.quality)
print("[bold green]Conversion terminée ![/bold green]")
if __name__ == "__main__":
main()