La première révélation, en abordant EPUB, est presque décevante de simplicité : un fichier .epub est une archive ZIP. Rien de plus. Renommez mon-livre.epub en mon-livre.zip, double-cliquez, et votre explorateur de fichiers vous ouvrira l'arborescence du livre comme celle d'un dossier ordinaire.
Cette simplicité n'est pas une paresse d'ingénieur : c'est un choix délibéré. Le ZIP est un format universel, implémenté partout, robuste, et déjà compris par toutes les piles logicielles. Bâtir dessus permet à EPUB de concentrer ses règles sur le contenu plutôt que sur la compression ou l'emballage.
L'arborescence canonique
Voici à quoi ressemble, une fois décompressé, un EPUB bien formé :
Deux dossiers sont obligatoires et nommés : META-INF/ et, hors archive, le fichier mimetype. Le reste est libre — on voit fréquemment OEBPS/, OPS/, EPUB/, ou même content/. Seule la référence exacte dans container.xml compte.
Le fichier mimetype
Premier dans l'archive, jamais compressé : c'est la signature du format. Son contenu tient en une ligne :
application/epub+zip
Règle non négociable
Le fichier mimetype doit être :
— le premier fichier de l'archive ZIP (offset 0) ;
— stocké sans compression (méthode STORE, pas DEFLATE) ;
— sans extra field ni BOM.
Cela permet à n'importe quel lecteur de reconnaître un EPUB en lisant les 30 premiers octets du fichier, sans même avoir à parser l'archive. La plupart des outils de création (Sigil, Calibre) le placent correctement par défaut ; zip -X0 livre.epub mimetype suivi de zip -Xr livre.epub * le fait à la main.
Le dossier META-INF/
C'est le panneau indicateur de l'archive : il dit au lecteur où trouver le fichier principal. Un seul document y est obligatoire, les autres sont tous optionnels.
container.xml (obligatoire)
META-INF/container.xml<?xml version="1.0" encoding="UTF-8"?>
<container
xmlns="urn:oasis:names:tc:opendocument:xmlns:container"
version="1.0">
<rootfiles>
<rootfile
full-path="OEBPS/content.opf"
media-type="application/oebps-package+xml"/>
</rootfiles>
</container>
Un rootfile unique suffit en pratique : il pointe vers le fichier OPF. La spécification autorise plusieurs rootfiles (différentes versions linguistiques, par exemple), mais c'est rarissime.
Les autres fichiers de META-INF/
| Fichier | Rôle | Cas d'usage |
|---|---|---|
encryption.xml | Liste les ressources chiffrées de l'archive | DRM Adobe ADEPT, Readium LCP, polices obfusquées |
signatures.xml | Signatures XMLDSig du package | Preuve d'intégrité éditoriale |
metadata.xml | Métadonnées hors package | Rare, réservé à des cas industriels |
rights.xml | Informations sur les droits et usages | DRM, licence Creative Commons, ONIX |
manifest.xml | Manifeste alternatif | Extension très peu utilisée |
Le dossier de contenu
Appelé traditionnellement OEBPS/ — pour Open EBook Publication Structure — il contient tout ce qui fait le livre : le fichier OPF (décrit au chapitre suivant), la table des matières, les documents XHTML de chaque chapitre, les feuilles de style, les images, les polices, les éventuels fichiers audio ou vidéo.
L'organisation en sous-dossiers (text/, images/, styles/) est une convention, non une obligation. Certains EPUB mettent tout à plat, d'autres adoptent une arborescence fine. Ce qui compte, c'est que chaque ressource soit déclarée dans le manifest du fichier OPF.
Chemins, encodage, casse
- Les chemins utilisent toujours le slash
/, jamais l'antislash Windows. - L'encodage des noms de fichiers est UTF-8.
- La casse est significative :
Cover.jpgetcover.jpgsont deux fichiers différents. - Les espaces et caractères spéciaux sont autorisés mais à éviter — ils compliquent inutilement les URL internes.
- Les liens internes entre fichiers XHTML sont des chemins relatifs classiques, exactement comme dans un site web.
Taille, compression, limites
La spécification n'impose aucune limite de taille absolue. En pratique :
- La plupart des liseuses plafonnent à 200 à 500 Mo par fichier.
- Kindle Direct Publishing limite à 650 Mo (conversion depuis EPUB).
- Apple Books accepte jusqu'à 2 Go, mais recommande de rester sous 500 Mo.
- Les images et polices embarquées sont le principal poste — un EPUB reflowable bien optimisé pèse rarement plus de 3 à 10 Mo.
Démonstration : créer un EPUB à la main
Par curiosité, voici les commandes brutes pour fabriquer un EPUB minimal depuis un dossier contenant mimetype, META-INF/, et OEBPS/ :
shell# 1. le mimetype doit entrer en premier, sans compression
zip -X0 mon-livre.epub mimetype
# 2. puis le reste, compressé normalement
zip -Xr9D mon-livre.epub META-INF OEBPS
# 3. validation
java -jar epubcheck.jar mon-livre.epub
Inspecter un EPUB existant
Pour fouiller n'importe quel EPUB, renommez simplement en .zip ou utilisez unzip -l mon-livre.epub. C'est l'un des plus puissants outils d'apprentissage : lire des fichiers OPF produits par des éditeurs professionnels vous apprend plus qu'une centaine de tutoriels.
L'archive est décortiquée. Passons maintenant à son cerveau : le fichier OPF qui orchestre tout l'ensemble.