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:
- Ottimizzazione interna senza perdita tramite PyMuPDF.
- Compressione tramite Ghostscript, se disponibile nel sistema.
- 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:
gswin64cgswin32cgs
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.