Gli e-book

Sono libri digitali che vegono letti mediante dispositivi elettronici:
- Pc
- Laptop
- Tablet
- Smart phone
- E reader
In questa sede ci occuperemo di e-reader in modo particolare del Boox Go 10.3"
Ci sono diversi standard:
| Produttore / Ecosistema |
Formati più comuni supportati |
| Amazon Kindle (E Ink & Fire, app) |
AZW3/KFX nativi; EPUB via conversione; PDF; TXT/RTF/HTML |
| Kobo (Rakuten) |
EPUB, PDF, MOBI, TXT, HTML, Comic (CBZ/CBR), FB2 |
| PocketBook |
EPUB, PDF, MOBI/PRC, FB2, TXT, HTML, Comic |
| ONYX BOOX (Android) |
EPUB, PDF, MOBI, TXT, HTML, tutti formati via app Android |
| Tolino |
EPUB, PDF, TXT, HTML |
| Sony eReader (modelli recenti) |
EPUB, PDF |
| App su smartphone/tablet (iOS/Android) |
EPUB, PDF, MOBI (con app compatibili), TXT, HTML ecc. |
Qui ci interesseremo principalmente dello standard epub supportato dall'Boox Go
Cosa è un epub equivale ad un file .zip che contiene al suo interno questa struttura:
mimetype
META-INF/
│└── container.xml
OEBPS/
│├── nav.xhtml
│├── cap1.xhtml
│├── cap2.xhtml
│├── . . .
│├── titlepage.xhtml
│├── content.opf
│├── style.css
│└── cover.jpg
Ora prenderemo un epub semplice e vedremo ciascun file. L'epub è un libricino che ha due capitoli con due sotto capitoli, un indice, una copertina:

Passiamo alladescrizione dei vari file:
mimetype
1️⃣ Cos’è mimetype
mimetype è un file di testo che serve a dire immediatamente a qualsiasi programma:
“Questo ZIP è un EPUB”
È la prima cosa che un lettore o un software (Calibre, Kobo, BOOX, ecc.) controlla senza nemmeno aprire tutto il file.
2️⃣ Contenuto di mimetype
Il contenuto è una sola riga, senza spazi, senza newline finale:
application/epub+zip
❗ Regole fondamentali
Se anche solo una di queste cose è sbagliata → l’EPUB può non essere riconosciuto.
3️⃣ Perché deve essere NON compresso
Quando l’EPUB è uno ZIP:
Questo permette al software di:
-
leggere solo i primi byte
-
riconoscere subito il formato
-
decidere come trattare il file
📌 Se fosse compresso, il programma dovrebbe decomprimere lo ZIP → più lento e non standard.
Se si vuole creare utilizzare Notepad++ impostando Formato a UTF-8
titlepage.xhtml
EPUB non “mostra immagini”, mostra pagine.
Un reader EPUB:
Quella pagina:
-
può contenere solo l’immagine
-
oppure titolo, autore, editore, ecc.
👉 Quindi è una pagina, non “la cover” in senso tecnico.
Molti EPUB3 fanno così:
-
file immagine:
<item id="cover" href="copertina.jpg" media-type="image/jpeg" properties="cover-image"/>
-
pagina XHTML:
<item id="titlepage" href="titlepage.xhtml" media-type="application/xhtml+xml"/>
-
nav.xhtml:
<a epub:type="cover" href="titlepage.xhtml">Copertina</a>
Nel nostro caso il file titlepage.xhtml contiene questo:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Copertina</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<body>
<img src="../copertina.jpg" alt="Copertina" style="width:100%; height:auto; display:block; margin:auto"/>
</body>
</html> |
Notare i "../" il file è fisicamente dentro la cartella OEBPS assieme agli altri file del testo, mentre l'immagine della copertina cover.jpg è nella radice percui per poterla indirizzare deve uscire da OEBPS.
content.opf
Questo è forse il file più importante.
content.opf è il “cervello” dell’EPUB.
Se vuoi una frase appena più lunga:
👉 È il file che dice al lettore cosa contiene il libro, dove sono i file e in che ordine leggerli.
Dentro content.opf ci sono solo tre cose fondamentali:
-
Metadati (titolo, autore, lingua…)
-
Manifest (lista di tutti i file del libro)
-
Spine (ordine di lettura)
Senza content.opf:
Questo è il contenuto
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="bookid" version="3.0">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title id="id">Piccolo Libro</dc:title>
<dc:creator id="id-1">Silvano</dc:creator>
<dc:identifier>calibre:57</dc:identifier>
<dc:identifier>uuid:949a185c-c927-4670-96dc-88104ddfe905</dc:identifier>
<dc:identifier id="bookid">urn:uuid:12345</dc:identifier>
<dc:language>it</dc:language>
<meta refines="#id" property="title-type">main</meta>
<meta refines="#id" property="file-as">Piccolo Libro</meta>
<meta property="dcterms:modified">2026-01-20T00:34:17Z</meta>
<meta refines="#id-1" property="role" scheme="marc:relators">aut</meta>
<meta refines="#id-1" property="file-as">Silvano</meta>
</metadata>
<manifest>
<item id="titlepage" href="OEBPS/titlepage.xhtml" media-type="application/xhtml+xml"/>
<item id="cap1" href="OEBPS/cap1.xhtml" media-type="application/xhtml+xml"/>
<item id="cap2" href="OEBPS/cap2.xhtml" media-type="application/xhtml+xml"/>
<item id="cap3" href="OEBPS/cap3.xhtml" media-type="application/xhtml+xml"/>
<item id="cap4" href="OEBPS/cap4.xhtml" media-type="application/xhtml+xml"/>
<item id="cap5" href="OEBPS/cap5.xhtml" media-type="application/xhtml+xml"/>
<item id="cap6" href="OEBPS/cap6.xhtml" media-type="application/xhtml+xml"/>
<item id="nav" href="OEBPS/nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
<item id="css" href="style.css" media-type="text/css"/>
<item id="cover" href="copertina.jpg" media-type="image/jpeg" properties="cover-image"/>
</manifest>
<spine>
<itemref idref="titlepage"/>
<itemref idref="cap1"/>
<itemref idref="cap2"/>
<itemref idref="cap3"/>
<itemref idref="cap4"/>
<itemref idref="cap5"/>
<itemref idref="cap6"/>
</spine>
</package>
|
I metadati
li generiamo con Calibre vedi in seguito
Nel manifest
si informa l'ereader di dove sono i file del testo: i capitoli, il titlepage, la cover, i fogli stile ed il nav (l'indice).
lo Spine
Da l'ordine in cui il'erider mostra le pagine
nav.xhtml
Cos’è nav.xhtml
nav.xhtml è l’indice di navigazione ufficiale dell’EPUB 3.
È il file che dice al lettore:
“Queste sono le voci dell’indice e portano a queste pagine”
📌 È per il lettore, non per il software (quello è content.opf).
Perché si chiama nav.xhtml
nav = navigation
Con EPUB 3 si è deciso che:
Da qui il nome convenzionale:
nav.xhtml
👉 Non è obbligatorio chiamarlo così
👉 Ma è fortemente consigliato (standard de facto)
Può chiamarsi anche:
MA nel content.opf deve avere:
properties="nav"
Cosa contiene davvero
Dentro nav.xhtml ci sono elenchi navigabili, non testo libero.
Il più importante è:
<nav epub:type="toc">
cioè:
Questo è il nostro nav:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:epub="http://www.idpf.org/2007/ops">
<head>
<title>Indice</title>
</head>
<body>
<nav epub:type="toc">
<ol>
<!-- Copertina -->
<li>
<a href="titlepage.xhtml">Copertina</a>
</li>
<!-- Storie -->
<li>
<a href="cap1.xhtml">Storie</a>
<ol>
<li><a href="cap2.xhtml">La Montagna Fatata</a></li>
<li><a href="cap3.xhtml">La Spada Magica</a></li>
</ol>
</li>
<!-- Personaggi -->
<li>
<a href="cap4.xhtml">Personaggi</a>
<ol>
<li><a href="cap5.xhtml">Sherek</a></li>
<li><a href="cap6.xhtml">Ciuchino</a></li>
</ol>
</li>
</ol>
</nav>
</body>
</html> |
EPUB 3: perché nav.xhtml ha sostituito toc.ncx
-
toc.ncx → XML tecnico, invisibile
-
nav.xhtml → XHTML leggibile, accessibile
👉 Un solo formato
👉 Stesse regole del resto del libro
👉 Più semplice e coerente
Indice a più livelli in nav.xhtml
Un indice multilivello si ottiene SOLO nidificando <ol> dentro <li>.
⚠️ Regola fondamentale
Un <ol> figlio DEVE stare dentro il <li> che rappresenta il capitolo padre.
Qui un esempio a tre livelli:
<li>
<a href="cap1.xhtml">Capitolo 1</a>
<ol>
<li>
<a href="cap1_1.xhtml">Sezione 1</a>
<ol>
<li><a href="cap1_1_1.xhtml">Paragrafo</a></li>
</ol>
</li>
</ol>
</li> |
👉 Non c’è un limite di livelli (teoricamente)
Regole ufficiali (riassunte)
1️⃣ Solo <ol> e <li>
2️⃣ Link obbligatorio
Ogni voce deve contenere un <a href="...">
3️⃣ Percorsi relativi
Se nav.xhtml è in OEBPS/:
<a href="cap1.xhtml">
Se fosse in una sottocartella:
<a href="../cap1.xhtml">
4️⃣ Coerenza con lo spine
Buona pratica consigliata
👉 Metti sempre:
-
Livello 1 → capitoli principali
-
Livello 2 → sottocapitoli
-
Livello 3 → solo se davvero serve
Un indice troppo profondo diventa scomodo.
|