Created
October 7, 2025 21:02
-
-
Save me-suzy/81c97bb6d4f937729b5bba9b048ea3a2 to your computer and use it in GitHub Desktop.
6576hh.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PIL import Image | |
from pathlib import Path | |
import img2pdf | |
def tiff_to_jpg_apoi_pdf(folder_input, nume_pdf="document.pdf"): | |
""" | |
1. Convertește TOATE TIFF-urile în JPG | |
2. Apoi combină toate JPG-urile într-un singur PDF | |
""" | |
folder_input = Path(folder_input) | |
folder_jpg = folder_input / "jpg" | |
folder_jpg.mkdir(exist_ok=True) | |
# ==================== ETAPA 1: TIFF → JPG ==================== | |
print("=" * 70) | |
print("ETAPA 1: CONVERSIE TIFF → JPG") | |
print("=" * 70) | |
fisiere_tiff = sorted(list(folder_input.glob("*.tif")) + | |
list(folder_input.glob("*.tiff")) + | |
list(folder_input.glob("*.TIF")) + | |
list(folder_input.glob("*.TIFF"))) | |
if not fisiere_tiff: | |
print("❌ Nu s-au găsit fișiere TIFF!") | |
return | |
print(f"📊 Găsite {len(fisiere_tiff)} fișiere TIFF") | |
print(f"💾 Salvare JPG în: {folder_jpg}\n") | |
for i, fisier_tiff in enumerate(fisiere_tiff, 1): | |
print(f"[{i}/{len(fisiere_tiff)}] {fisier_tiff.name}...", end=" ", flush=True) | |
try: | |
img = Image.open(fisier_tiff) | |
# Convertește în RGB dacă e necesar | |
if img.mode == 'RGBA': | |
background = Image.new('RGB', img.size, (255, 255, 255)) | |
background.paste(img, mask=img.split()[3] if len(img.split()) == 4 else None) | |
img = background | |
elif img.mode not in ('RGB', 'L'): | |
img = img.convert('RGB') | |
# Salvează JPG | |
cale_jpg = folder_jpg / (fisier_tiff.stem + ".jpg") | |
img.save(cale_jpg, 'JPEG', quality=100, subsampling=0, optimize=True) | |
print("✓") | |
except Exception as e: | |
print(f"✗ {e}") | |
print(f"\n✓ Conversie TIFF → JPG completă!") | |
print(f"✓ {len(fisiere_tiff)} imagini JPG salvate\n") | |
# ==================== ETAPA 2: JPG → PDF ==================== | |
print("=" * 70) | |
print("ETAPA 2: CREARE PDF DIN JPG-URI") | |
print("=" * 70) | |
# Găsește toate JPG-urile (sortate) | |
fisiere_jpg = sorted(list(folder_jpg.glob("*.jpg")) + | |
list(folder_jpg.glob("*.jpeg")) + | |
list(folder_jpg.glob("*.JPG")) + | |
list(folder_jpg.glob("*.JPEG"))) | |
if not fisiere_jpg: | |
print("❌ Nu s-au găsit fișiere JPG pentru PDF!") | |
return | |
print(f"📊 Găsite {len(fisiere_jpg)} imagini JPG") | |
print(f"📄 Creare PDF: {nume_pdf}\n") | |
# Listează ce va fi în PDF | |
print("📋 Pagini în PDF:") | |
for i, fisier in enumerate(fisiere_jpg, 1): | |
print(f" {i}. {fisier.name}") | |
print(f"\n🔄 Generare PDF cu {len(fisiere_jpg)} pagini...", end=" ", flush=True) | |
try: | |
# Creează PDF în folderul principal | |
cale_pdf = folder_input / nume_pdf | |
# Convertește căile în string-uri | |
imagini_str = [str(img) for img in fisiere_jpg] | |
# Creează PDF | |
with open(cale_pdf, "wb") as f: | |
f.write(img2pdf.convert(imagini_str)) | |
print("✓") | |
# Informații despre PDF | |
dimensiune_mb = cale_pdf.stat().st_size / (1024 * 1024) | |
print("\n" + "=" * 70) | |
print("✓✓✓ PROCES COMPLET! ✓✓✓") | |
print("=" * 70) | |
print(f"✓ JPG-uri salvate în: {folder_jpg}") | |
print(f"✓ PDF creat: {cale_pdf}") | |
print(f"✓ Număr pagini: {len(fisiere_jpg)}") | |
print(f"✓ Dimensiune PDF: {dimensiune_mb:.2f} MB") | |
except Exception as e: | |
print(f"\n✗ Eroare la creare PDF: {e}") | |
# ==================== RULEAZĂ ==================== | |
tiff_to_jpg_apoi_pdf( | |
r"g:\Hidrotehnica 1960 (Anul 5, nr. 1-12)", | |
nume_pdf="Hidrotehnica_1960.pdf" | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment