EPUB FACTORY
Capire l'EPUB / Le basi
Le basi

Che cosa c'è dentro un file EPUB?
decomprimilo e guarda il meccanismo

Un file EPUB è in realtà uno ZIP. Cambia l'estensione e chiunque può aprirlo e guardare. Questo articolo percorre che cosa c'è davvero lì dentro quando lo apri e che cosa fa ciascun file. Una volta che conosci il meccanismo, puoi indovinare dove guardare quando qualcosa non viene mostrato.
In questo articolo
  1. Decomprimere un EPUB
  2. La forma generale
  3. mimetype ── il file più strano
  4. container.xml ── il cartello indicatore
  5. content.opf ── il cuore del libro
  6. nav.xhtml ── l'indice
  7. Testo, CSS e immagini
  8. Perché costruirne uno a mano è difficile

Decomprimere un EPUB

Comincia col farlo. Se hai un EPUB a portata di mano, serve solo questo.

1Copia il file EPUB (per non rovinare l'originale)
2Cambia l'estensione da .epub a .zip
3Decomprimilo come al solito

Ecco fatto. Nessun software particolare. Un EPUB è uno ZIP, quindi si apre senza nemmeno un avviso.

Il contrario non funziona

Potresti pensare: «se si decomprime, allora comprimere una cartella e rinominarla in .epub fa un EPUB». Non è così semplice, per via delle regole su come dev'essere compresso descritte nella sezione successiva.

La forma generale

Aperto, di solito si presenta così.

La cartella aperta
├── mimetype       segnala che questa scatola è un EPUB
├── META-INF/
│  └── container.xml  indica dove si trova il libro vero e proprio
└── OEBPS/       la cartella che contiene il libro
  ├── content.opf   informazioni del libro, elenco dei contenuti, ordine di lettura
  ├── nav.xhtml    indice
  ├── text/
  │  ├── p001.xhtml  il testo (un file per pagina)
  │  └── p002.xhtml
  ├── image/
  │  └── cover.jpg   la copertina e le altre immagini
  └── style/
    └── book.css   aspetto

OEBPS — quel nome di cartella, e come le cose sono divise al suo interno, variano a seconda dello strumento che l'ha costruito. Potrebbe essere item oppure xhtml al suo posto, e va benissimo.

Quello che non puoi cambiare, né di nome né di posizione, è mimetype in testa e META-INF/container.xml . Quei due sono fissi e tutto il resto è libero: è questo il passo uno per capire la struttura.

mimetype ── il file più strano

Il suo contenuto è una sola riga.

application/epub+zip

Il suo compito è dichiarare «questo ZIP è un EPUB». Ma arriva con regole severe che nessun altro file ha.

Un'app di lettura può decidere «questo è un EPUB» leggendo solo i primi byte del file. È per questo che posizione e forma sono inchiodate.

È qui che gli EPUB fatti a mano cadono per primi

Comprimi una cartella con uno strumento normale e non puoi scegliere l'ordine dei file, e mimetype finisce compresso insieme a tutto il resto. Il risultato: lo rinomini in .epub e le app di lettura non lo aprono.

Soddisfare la condizione «per primo, non compresso» significa eseguire la compressione in due passaggi separati. È la primissima cosa che fa uno strumento di costruzione EPUB.

container.xml ── il cartello indicatore

META-INF/container.xml si presenta così.

<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="OEBPS/content.opf"
      media-type="application/oebps-package+xml"/>
  </rootfiles>
</container>

Fa esattamente una cosa: dice «le informazioni del libro stanno in OEBPS/content.opf ».

È grazie a quel cartello che i nomi delle cartelle possono essere liberi. Un'app di lettura guarda prima META-INF/container.xml e va dove punta.

content.opf ── il cuore del libro

È il file più importante di un EPUB. Si divide in tre parti.

ParteChe cosa fa
metadataTitolo, autore, lingua — le informazioni del libro stesso
manifestUn elenco di tutti i file inclusi
spineL'ordine in cui si voltano le pagine

metadata ── le informazioni del libro

<metadata>
  <dc:title>Alice nel Paese delle Meraviglie</dc:title>
  <dc:creator>Lewis Carroll</dc:creator>
  <dc:language>it</dc:language>
  <dc:identifier id="uid">urn:uuid:xxxxxxxx</dc:identifier>
  <meta property="dcterms:modified">2026-08-04T00:00:00Z</meta>
</metadata>

Quello da tenere d'occhio è dc:title . Ciò che compare sullo scaffale di un'app di lettura è questo valore, non il nome del file. Per quanto tu abbia nominato con cura il file, se questo è vuoto lo scaffale mostra «Untitled».

dc:language conta anch'esso. Metti it per l'italiano, ja per il giapponese. Senza, un'app di lettura potrebbe non applicare le regole di composizione della lingua — cosa che pesa soprattutto in giapponese.

manifest ── l'elenco dei file inclusi

<manifest>
  <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
  <item id="p001" href="text/p001.xhtml" media-type="application/xhtml+xml"/>
  <item id="css" href="style/book.css" media-type="text/css"/>
  <item id="cover" href="image/cover.jpg" media-type="image/jpeg"/>
</manifest>

Ogni file dell'EPUB dev'essere registrato qui. Aggiungi un'immagine e dimentica di registrarla, e già solo questo è un errore. Il contrario — registrata ma non presente — è anch'esso un errore.

Il file dell'indice è contrassegnato con properties="nav" , che è il suo modo di dire «questo file è l'indice».

spine ── l'ordine di lettura

<spine page-progression-direction="rtl">
  <itemref idref="p001"/>
  <itemref idref="p002"/>
</spine>

manifest è l'elenco di ciò che c'è dentro; spine è in che ordine si legge. L'ordine qui diventa l'ordine delle pagine.

E la parte che conta di più in un libro giapponese è page-progression-direction .

ValoreSignificatoLibri che lo usano
rtlAvanza da destra a sinistraScrittura verticale, manga
ltrAvanza da sinistra a destraScrittura orizzontale

Lascialo fuori da un libro composto in verticale e le pagine si voltano al contrario. È una delle prime cose da controllare quando la scrittura verticale non funziona.

nav.xhtml ── l'indice

EPUB 3 richiede sempre l'indice come file a sé. Sembra un normale elenco di collegamenti in HTML, distinto dal marcatore epub:type="toc" .

<nav epub:type="toc">
  <ol>
    <li><a href="text/p001.xhtml">Capitolo 1</a></li>
    <li><a href="text/p002.xhtml">Capitolo 2</a></li>
  </ol>
</nav>

È questo che compare quando chi legge preme il pulsante dell'indice. Se manca un file collegato, hai un libro in cui non si può navigare.

Potresti trovarci anche toc.ncx

Nel vecchio EPUB 2, un file chiamato toc.ncx faceva il lavoro dell'indice. EPUB 3 l'ha sostituito con nav.xhtml , ma alcuni EPUB includono entrambi perché le app di lettura più vecchie continuino a funzionare.

Testo, CSS e immagini

Da qui in poi è praticamente uguale a una pagina web.

Come dividi il testo dipende da te, ma un singolo file troppo grande rende lente le app di lettura, quindi dividere per capitolo è la norma.

Perché costruirne uno a mano è difficile

Come hai visto, la struttura di un EPUB non è complicata. Testo, immagini e istruzioni di impaginazione impacchettati in una scatola con un cartello e un elenco — tutto qui.

Le regole da rispettare, però, sono pignole.

Se ne manca uno, il libro non si apre, o viene respinto al caricamento sullo store. E la causa dell'errore di solito non si vede da ciò che appare sullo schermo.

Per questo, nella produzione reale, si usa uno strumento che monta la struttura a partire da un manoscritto o da immagini. Anche così, aver guardato dentro una volta significa che puoi indovinare dove guardare quando qualcosa va storto — ed è proprio questo lo scopo dell'articolo.

La struttura viene montata per te

EPUB FACTORY costruisce automaticamente ogni parte della struttura descritta qui. Basta scegliere una cartella di immagini o un manoscritto di testo. Senza account, senza installare nulla.

Prova EPUB FACTORY