Skip to content

Instantly share code, notes, and snippets.

@me-suzy
Created October 7, 2025 21:02
Show Gist options
  • Save me-suzy/81c97bb6d4f937729b5bba9b048ea3a2 to your computer and use it in GitHub Desktop.
Save me-suzy/81c97bb6d4f937729b5bba9b048ea3a2 to your computer and use it in GitHub Desktop.
6576hh.py
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