Files
zipbundler/README.md
2026-07-02 19:57:28 +02:00

4.8 KiB

ZipBundler versione 1.0

ZipBundler e un piccolo tool desktop per creare piu archivi ZIP indipendenti a partire da una cartella sorgente, mantenendo ogni pacchetto entro una dimensione massima configurabile.

L'obiettivo pratico e preparare allegati gestibili per invio tramite posta elettronica aziendale, dove spesso il limite reale degli allegati e vicino a 20-25 MB.

Funzioni principali

  • Scelta della cartella sorgente.
  • Scelta della cartella di destinazione.
  • Dimensione massima dei pacchetti tramite spinbox.
  • Default a 15 MB, piu prudente per l'invio email.
  • Avviso inline sopra 18 MB, con richiesta di accettazione esplicita.
  • Creazione di pacchetti pacchetto_001.zip, pacchetto_002.zip, ecc.
  • Verifica della dimensione reale dello ZIP finale, non della somma dei file originali.
  • Ottimizzazione guidata di PDF troppo grandi.
  • Ottimizzazione guidata di immagini troppo grandi.
  • Opzione esplicita per convertire formati immagine non compressi in JPEG.
  • Opzione esplicita per convertire file Office grandi in PDF.

Scelta fondamentale sulla dimensione

La dimensione limite viene controllata sul file .zip finale.

Questo e importante perche la dimensione dei file originali non coincide con la dimensione dell'archivio compresso. Il programma crea ZIP temporanei di prova, misura il risultato reale e solo dopo decide se un file puo entrare nel pacchetto corrente.

PDF troppo grandi

Quando un PDF supera da solo il limite impostato, ZipBundler prova diversi approcci:

  1. Ottimizzazione interna senza perdita tramite PyMuPDF.
  2. Compressione tramite Ghostscript, se disponibile nel sistema.
  3. Ricodifica a immagini/DPI ridotti solo per PDF che non sembrano contenere testo selezionabile significativo.

La ricodifica raster dei PDF nativi e evitata quando possibile, perche puo aumentare la dimensione e far perdere testo selezionabile.

Se viene creata una copia ridotta, l'originale non viene modificato. La copia viene salvata nella cartella di destinazione, dentro _pdf_ridotti_email.

Nella GUI viene mostrata una preview affiancata originale/ridotto, con navigazione delle pagine.

Ghostscript

Ghostscript e usato come motore preferenziale per ridurre PDF nativi quando e disponibile.

Il programma cerca:

  • gswin64c
  • gswin32c
  • gs

Se Ghostscript non e presente, il programma salta quel passaggio e continua con le altre strategie.

Immagini troppo grandi

Per le immagini viene usata Pillow.

Formati supportati:

  • JPG/JPEG
  • PNG
  • TIFF/TIF
  • BMP
  • WEBP

Profili:

  • qualita alta: lato lungo massimo 2500 px
  • qualita email: lato lungo massimo 1800 px
  • massima compressione: lato lungo massimo 1200 px

Per impostazione predefinita il formato originale viene mantenuto. Per esempio un TIFF ridotto resta TIFF.

Esiste pero una checkbox esplicita:

Converti formati non compressi in JPEG (es. BMP/TIFF)

Solo se questa opzione e attiva, BMP e TIFF vengono convertiti in JPEG per ottenere file molto piu leggeri.

Le copie ridotte vengono salvate in _immagini_ridotte_email.

File Office troppo grandi

ZipBundler puo convertire file Office grandi in PDF, ma solo se la checkbox dedicata e attiva:

Converti file Office grandi in PDF (es. DOCX -> PDF)

Formati previsti:

  • DOC/DOCX
  • XLS/XLSX
  • PPT/PPTX

La conversione usa Microsoft Office tramite automazione COM (win32com). Quindi richiede Office installato e funzionante sul PC.

Le copie PDF vengono salvate in _office_convertiti_pdf.

LibreOffice headless e stato valutato come opzione futura, ma non e incluso per evitare di aumentare molto il peso di un eventuale eseguibile PyInstaller.

Scelte conservative

  • Gli originali non vengono mai modificati.
  • Le conversioni di formato sono disattivate di default.
  • Una copia ottimizzata viene accettata solo se riduce davvero il file e permette allo ZIP finale di rientrare nel limite.
  • Sopra 18 MB viene richiesto consenso esplicito, perche la codifica email puo aumentare la dimensione effettiva del messaggio.
  • Se un file non puo essere ridotto sotto soglia, viene segnalato e inserito in un pacchetto fuori limite.

Uso GUI

python .\zipbundler.py

Uso CLI

python .\zipbundler.py C:\percorso\cartella --output C:\percorso\output --size-mb 15

Opzioni:

--convert-uncompressed-images
--convert-office-to-pdf

Dipendenze Python

pip install -r requirements.txt

Dipendenze principali:

  • CustomTkinter
  • Pillow
  • PyMuPDF

Per Office COM serve anche pywin32, installato nell'ambiente in cui viene eseguito il programma.

Packaging futuro

Il progetto e pensato per essere trasformato in un eseguibile Windows con PyInstaller.

Da valutare:

  • inclusione o rilevamento esterno di Ghostscript;
  • gestione piu esplicita di pywin32;
  • eventuale icona applicativa;
  • firma dell'eseguibile, se necessaria in ambiente aziendale.