Ultimo Aggiornamento: 10 settembre, 2026

How Compression Works Inside EPUB, DOCX, XLSX, & PPTX: The Hidden ZIP Architecture

Come funziona la compressione all’interno di EPUB, DOCX, XLSX e PPTX

Se rinomini un file .docx, .xlsx, .pptx o .epub in .zip e fai doppio clic, succede qualcosa di sorprendente: non genera un errore. Il tuo sistema operativo lo apre come una cartella piena di sottodirectory, file di configurazione XML, fogli di stile, font e immagini incorporate.

Le architetture dei documenti moderni hanno abbandonato i blob binari monolitici decenni fa. Al loro posto, gli standard di settore — in particolare Open Packaging Conventions (OPC) per Microsoft Office e Open Container Format (OCF) per EPUB — hanno adottato una base sorprendentemente elegante: il modesto archivio ZIP.

Comprendere come funziona la compressione all’interno di questi formati rivela perché i documenti moderni sono così resilienti, leggeri ed estensibili — e perché alcuni file si comprimono del 90% mentre altri si riducono a malapena.

1. L’architettura del contenitore: Pacchetti ZIP mascherati

Prima di capire l’algoritmo di compressione stesso, è utile comprendere perché i formati di documenti moderni sono strutturati come pacchetti anziché come file grezzi autonomi.

Il problema dei formati binari legacy

Nel corso degli anni ‘90 e dei primi anni 2000, Microsoft Office utilizzava formati binari proprietari (.doc, .xls, .ppt). Questi file erano essenzialmente dump di memoria strutturati attorno al Compound File Binary Format (CFBF). Erano notoriamente fragili:

  • Un singolo bit invertito poteva corrompere l’intera struttura del file.
  • L’incorporamento di immagini faceva gonfiare le dimensioni dei file in modo imprevedibile.
  • L’analisi richiedeva l’ingegneria inversa di specifiche binarie dense.
  • L’interoperabilità cross‑platform era un incubo.

Il passaggio a contenitori aperti e modulari

A metà degli anni 2000, si sono verificate due evoluzioni parallele:

  1. Office Open XML (OOXML / ISO/IEC 29500): Microsoft ha introdotto i formati basati su XML che terminano con una x (DOCX, XLSX, PPTX). In pratica, questi file seguono le Open Packaging Conventions (OPC).
  2. EPUB (IDPF / W3C): L’editoria digitale si è allontanata dai formati proprietari dei lettori per passare a tecnologie web standard (HTML, CSS, SVG) raggruppate all’interno del EPUB Open Container Format (OCF).

Entrambe le architetture si basano sullo standard PKZIP 2.0 / ZIP specification. L’estensione del file indica semplicemente lo schema previsto, l’applicazione visualizzatore predefinita e le dichiarazioni del tipo MIME.

Sample DOCX File (Unzipped):
├── [Content_Types].xml        <-- Registry of MIME types for parts
├── _rels/                     <-- Package-level relationships
│   └── .rels
├── docProps/                  <-- Core and extended metadata
│   ├── app.xml
│   └── core.xml
└── word/                      <-- Main content payload
    ├── document.xml           <-- Text, paragraphs, and tags
    ├── styles.xml             <-- Typography and presets
    ├── numbering.xml          <-- Lists and counters
    ├── media/                 <-- Embedded images (PNG, JPG)
    └── _rels/
        └── document.xml.rels  <-- Internal hyperlinks & resource pointers

2. Il motore sotto il cofano: l’algoritmo DEFLATE

Quando un’applicazione software salva un file DOCX o EPUB, non si limita a memorizzare i file in un archivio non compresso. Comprende le risorse interne utilizzando DEFLATE (specificato in RFC 1951).

DEFLATE è un sistema di compressione senza perdita a due livelli che combina due algoritmi fondamentali dell’informatica:

Passo 1: LZ77 (Lempel-Ziv 1977) — Rimozione della ridondanza con finestra scorrevole

XML e HTML sono estremamente prolissi. Considera quanto spesso i tag compaiono in un file standard document.xml o chapter1.xhtml:

  • <w:p><w:r><w:rPr><w:sz w:val=\"24\"/></w:rPr><w:t> si ripete migliaia di volte in Word.
  • row r=\"1\" spans=\"1:15\"><c r=\"A1\" t=\"s\"><v> si ripete in Excel su decine di migliaia di celle.
  • <p class=\"calibre1\"><span class=\"body-text\"> si ripete nei capitoli dei libri EPUB.

LZ77 analizza il flusso di dati usando una finestra di dizionario scorrevole (tipicamente 32 KB). Quando incontra una sequenza di caratteri vista di recente, sostituisce il testo duplicato con un piccolo puntatore retroattivo:

  • (distance, length) — per es., “torna indietro di 142 byte, copia 28 byte”.

Invece di memorizzare markup verboso più volte, LZ77 comprime migliaia di tag XML ripetitivi in riferimenti di coordinate compatti.

Passo 2: Codifica Huffman — Codifica di frequenza a lunghezza variabile

Dopo che LZ77 sostituisce le sequenze ridondanti con token di lunghezza-distanza, Huffman coding analizza la frequenza di ogni simbolo nel flusso:

  • I simboli che appaiono frequentemente (come i caratteri comuni e, t, spazi, o i marcatori di distanza comuni) vengono assegnati a codici binari brevi (per es., da 2 a 4 bit).
  • I simboli usati raramente ricevono codici binari più lunghi (per es., da 12 a 16 bit).

Il risultato è un flusso di codici a bit di lunghezza variabile che comprimono l’XML di testo semplice del 75% al 88%.

3. Analisi formato per formato: come ciascuno gestisce la compressione

Mentre DOCX, XLSX, PPTX ed EPUB utilizzano tutti lo stesso contenitore ZIP, le loro caratteristiche interne dei dati differiscono notevolmente.

A. DOCX: L’equilibrio tra testo e stile

  • Cosa contiene: XML semplice (word/document.xml), tabelle dei caratteri, stili, cataloghi delle relazioni e una cartella word/media/.
  • Come funziona la compressione:
    • Il testo grezzo e il markup XML subiscono rapporti di compressione massicci (spesso passando da 5 MB di XML grezzo a 500 KB).
    • Tuttavia, i documenti moderni spesso incorporano screenshot, illustrazioni e foto. Poiché i file JPEG e PNG sono già compressi, DEFLATE non può ridurli ulteriormente. Infatti, applicare DEFLATE a un’immagine già compressa produce praticamente nessun risparmio (0 %) (e può persino aumentare leggermente le dimensioni a causa delle intestazioni di compressione).
    • Di conseguenza, i file DOCX senza immagini sono eccezionalmente piccoli, mentre i report ricchi di immagini riflettono quasi esattamente la dimensione dei file immagine contenuti.

B. XLSX: Dati Numerici ad Alto Volume e Stringhe Condivise

I fogli di calcolo presentano una sfida unica: un foglio può contenere centinaia di migliaia di righe, portando a dimensioni astronomiche dei file XML se non gestiti in modo intelligente.

  • La strategia delle stringhe condivise (xl/sharedStrings.xml):
    • Se un’etichetta di testo come “United States” o “In Progress” appare 50.000 volte in un foglio di calcolo, memorizzare <c t="inlineStr"><is><t>United States</t></is></c> in 50.000 celle gonfierebbe l’XML non compresso a gigabyte.
    • Excel elimina i duplicati di testo prima della compressione memorizzando ogni stringa unica una sola volta in una tabella di stringhe condivise e facendo riferimento ad essa tramite indice numerico (ad es., <v>0</v>, <v>1</v>).
  • Perché XLSX si comprime drasticamente:
    • I record numerici delle righe (sheet1.xml) seguono una sintassi ripetitiva e prevedibile.
    • DEFLATE rileva facilmente i pattern ripetitivi nell’XML tabellare. È comune che un file sheet1.xml grezzo da 120 MB si riduca a meno di 6 MB all’interno di un archivio XLSX.

C. PPTX: Presentazioni Cariche di Media

Le presentazioni sono fondamentalmente diverse da documenti e fogli di calcolo:

  • Il dilemma delle immagini: I file PPTX sono tipicamente dominati da forme vettoriali, grafiche di sfondo, clip video e diapositive ad alta risoluzione.
  • Profilo di compressione: mentre ppt/slides/slide1.xml fino a slideN.xml si comprimono efficientemente, il payload multimediale (ppt/media/) rappresenta dall'85% al 95% del peso totale dell’archivio.
  • Perché ricomprimere un PPTX non cambia nulla: Se provi a comprimere un file PPTX già salvato con 7-Zip o WinRAR, noterai quasi nessuna riduzione di dimensione. Poiché l’interno è già un archivio ZIP compresso con DEFLATE contenente JPEG e MP4 pre-compressi, l’entropia è già quasi al massimo.

D. EPUB: Tecnologie Web con un’Intestazione Non Compressa Obbligatoria

Un file EPUB è essenzialmente un micro-sito web reattivo e confezionato che contiene capitoli XHTML, fogli di stile CSS, font TTF/WOFF e metadati. Tuttavia, EPUB ha una regola di confezionamento rigorosa che lo differenzia dai file di Microsoft Office:

EPUB Internal Structure:
├── mimetype                    <-- MUST be uncompressed (Stored) & at byte offset 38
├── META-INF/
│   └── container.xml           <-- Tells reader where the OPF manifest lives
└── OEBPS/ (or EPUB/)
    ├── content.opf             <-- Manifest of all book assets
    ├── toc.ncx / nav.xhtml     <-- Table of contents navigation
    ├── styles/style.css        <-- CSS formatting
    ├── images/                 <-- Book cover & illustrations
    └── text/                   <-- chapter1.xhtml, chapter2.xhtml
  • Il file magico mimetype:
    • I lettori di e-book devono identificare un EPUB immediatamente senza estrarre l’intero archivio o avviare pipeline di decompressione.
    • Il formato Open Container (OCF) richiede che il file mimetype:
      1. Deve essere il primo file nell’archivio ZIP.
      2. Deve contenere esattamente la stringa application/epub+zip.
      3. Non deve essere compresso (metodo di compressione ZIP 0 / “Stored”).
      4. Non deve contenere dati di campo aggiuntivi, garantendo che la stringa MIME inizi sempre al byte 38 del file fisico.
  • Compressione del testo: Tutti i file rimanenti (.xhtml, .css, .opf) sono compressi usando lo standard DEFLATE (metodo ZIP 8), consentendo ai romanzi a lunghezza completa di ridursi a poche centinaia di kilobyte.

4. Confronto della Compressione tra Formati

FormatoPayload principaleFonte primaria di ridondanzaRapporto di compressione tipico (Testo/Markup)Gestione dei media
DOCXWordprocessingML (document.xml)Tag di paragrafo/esecuzione XML ripetitivi75% – 85%Memorizzato in word/media/ (per lo più pre-compressi)
XLSXSpreadsheetML (sheet*.xml)Tag di cella/riga ripetitivi; Stringhe condivise80% – 92%Scarsa; immagini/grafici in xl/media/
PPTXPresentationML (slide*.xml)Metadati del layout della diapositiva, coordinate delle forme70% – 80%Il carico pesante ppt/media/ limita i risparmi complessivi
EPUBXHTML, CSS, OPF, NCXTag HTML, selettori CSS ripetitivi65% – 80%mimetype non compresso; media in sottocartelle

5. Conclusioni Pratiche: Come Ottimizzare i Tuoi Documenti

Poiché ora conosci il funzionamento dell’imballaggio interno, puoi sfruttare i meccanismi di compressione per risolvere problemi del mondo reale:

  1. Correzione di Documenti Corrotti: Se un documento si rifiuta di aprirsi, cambiare l’estensione in .zip consente di estrarre il contenuto e recuperare il testo grezzo da document.xml o i capitoli individuali dalla directory text/ dell’EPUB.
  2. Riduzione di Enormi File Office: Poiché la compressione XML è già ottimizzata, i file di grandi dimensioni sono quasi sempre causati da immagini non ottimizzate in media/. Invece di utilizzare compressori PDF o DOCX di terze parti, apri il contenitore ZIP, estrai le immagini, passale attraverso un ottimizzatore di immagini (come WebP, TinyPNG o MozJPEG) e sostituiscile all’interno dell’archivio.
  3. Automazione della generazione di documenti: Gli sviluppatori non hanno bisogno di suite office pesanti per creare report. Puoi generare modelli XML grezzi, impacchettarli usando le librerie standard zlib/ZIP e produrre file DOCX o XLSX validi in modo programmatico in pochi millisecondi.

6. Domande Frequenti (FAQ)

Posso convertire un DOCX o EPUB in un file ZIP semplicemente rinominando l’estensione del file? Sì; rinominare l’estensione in .zip consente a qualsiasi strumento di archiviazione standard (come 7-Zip, macOS Archive Utility o Windows Explorer) di aprire e ispezionare direttamente i file interni.

Perché comprimere un DOCX o PPTX con 7-Zip non lo rende notevolmente più piccolo? Perché il file è già un archivio ZIP compresso internamente contenente XML codificato in DEFLATE e immagini pre-compressate, lasciando poca ridondanza per uno strumento esterno da rimuovere.

Perché la specifica EPUB richiede che il file mimetype sia non compresso? Consente al software del lettore di verificare che il file sia un EPUB autentico controllando la stringa MIME a un offset di byte fisso senza dover avviare un motore di decompressione.

Modificare la formattazione delle celle in Excel aumenta la dimensione del file XLSX compresso? Sì; una formattazione personalizzata estesa interrompe la ripetizione uniforme dei pattern tra le celle, creando definizioni XML più lunghe che riducono l’efficienza di compressione di DEFLATE.

È possibile estrarre immagini originali ad alta risoluzione da un file Word o PowerPoint senza perdita di qualità? Sì; rinomina il file in .zip, apri la cartella word/media o ppt/media e troverai le immagini originali, non compresse, esattamente come sono state inserite.

Vedi anche