Dissection d’un fichier ebook

Temps de lecture estimé : 13 minutes
On va se concentrer ici sur le format EPUB, qui est le standard dans le métier, et à partir duquel on peut produire tous les autres.

On ne vous l’avait peut-être pas dit, mais un fichier EPUB est en fait un fichier ZIP. C’est comme si on avait zippé un paquet de fichiers ensemble et qu’on avait renommé le résultat de mon_paquet_de_fichiers.zip à mon_paquet_de_fichiers.epub.

Ça veut dire que vous pouvez faire l’opération inverse, remplacer le .epub par .zip sur n’importe quel fichier EPUB, et votre programme de dézippage le reconnaitra comme l’un des siens. Ah ben tiens, décompressons et voyons ce qu’il y a dedans.

Peut-être n’aviez vous pas été prévenu, mais un fichier EPUB est plein de pages HTML. Où plutôt XHTML, ce qui est une façon maniérée de dire « HTML bien écrit ». Vous aurez peut-être besoin d’aller les trouver dans un dossier dénommé OEBPS.

Comme vous le savez, les pages HTML s’ouvrent avec Firefox et consorts. d’ailleurs si vous ouvrez l’un des fichiers XHTML avec un navigateur, vous verrez qu’il s’agit du texte du livre. Donc, un ebook est en fait un paquet (ou une seule, pour les livres courts) de pages web zippées ensemble, avec une poignée d’autre fichiers à côté.

Voilà un mystère de résolu.

Si les XHTML représentent le texte, les autres fichiers c’est quoi ?

Le fichier mimetype

Il y a, entre autres, un fichier qui s’appelle mimetype et qui, si vous l’ouvrez, vous donnera envie de vous taper le front du plat de la main. Il ne contient que quelques caractères, exactement les mêmes pour tous les epub :

application/epub+zip

Il sert uniquement à confirmer à l’application qui ouvre le fichier ce qu’elle savait déjà (ben oui, le nom du fichier est en .epub). Il est horripilant, mais il est indispensable.

À noter : Lors du zippage, le fichier mimetype est placé en première position dans la moulinette à ZIP, et n’est pas mouliné. C’est le seul fichier non-compressé du ZIP. La raison est qu’il doit pouvoir être accédé aisément par l’application (pas besoin de le décompresser). En attendant, c’est un emmerdement majeur pour les fabricants d’ebook, qui doivent compresser en deux étapes.

La couv

Toutes les images contenues dans l’ebook sont, bien entendu, contenue dans le ZIP. Vous les trouverez peut-être dans un sous-dossier quelconque, mais elles sont là, y comprit la couverture. Cette dernière est reconnue comme telle par le programme de lecture grâce à…

Le fichier de description

Notre gros poisson. Ce fichier, c’est la colonne vertébrale de l’ebook. C’est grâce à lui qu’on sait qui est quoi est où est comment. Son nom résonne dans la sierra, il s’appelle :

content.opf

En général.

Oui, les empaffés qui ont défini la norme EPUB ont décidé qu’on pouvait lui donner le nom qu’on voulait. Du coup, pour signaler au programme que fichier de description utiliser, il faut un fichier qui sert uniquement à ça. Celui là a un nom fixe, pour que le programme le reconnaisse au premier coup d’œil. Il s’appelle container.xml. Si vous ne le voyez pas, c’est normal, les coupeurs de cheveux en quatre ont aussi stipulé qu’il doive se trouver dans son propre sous-dossier : META-INF. Allez le trouver et regardez dedans, il y a quatre lignes de code qui se battent en duel et qui veulent dire : « le fichier de description s’appelle content.opf« .

Revenons-en à ce dernier. Ouvrons-le et prenons-nous dessus une avalanche de code indigestible. Au second coup d’œil on voit qu’il est composé de trois parties :

metadata

C’est là que le programme de lecture vient chercher les metadonnées. Une ligne pour le titre, une ligne pour le nom de l’auteur, une ligne pour indiquer où se trouve la couverture (aha!)… Lorsque, sur une liseuse, vous regardez la page d’information d’un livre, c’est ce bout de fichier que vous être en train de lire.

manifest

Cette partie fait une liste exhaustive de tous les fichiers contenus dans le ZIP, leur attribue une sorte de surnom et spécifie de quel type ils sont. Tous, sauf ceux dont les noms sont fixés (comme mimetype et container.xml). Rien de bien folichon, on passe à la suite.

spine

Cette partie, c’est la reliure du livre. Une liste chronologique des fichiers XHTML dans l’ordre dans lesquels ils doivent être lus. Si, bien entendu, le livre est composé de plusieurs fichiers XHTML. Mais c’est une pratique très fréquente. Plutôt que de lister l’emplacement des fichiers, on liste simplement leur surnom, comme défini dans le chapitre juste au-dessus.

Voilà pour le fichier de description.

toc.ncx

Quand vous accédez à la table des matières du livre, sur votre liseuse, cette dernière va chercher ce fichier et vous l’affiche quasiment tel quel. C’est donc notre fichier table des matières.

Chaque élément de la table des matières est contenu dans une balise navPoint. Y figurent l’ordre d’apparition, un « point de navigation » (dont on trouvera la contrepartie dans la balise de titre du chapitre, dans le fichier XHTML correspondant), Le texte à afficher pour ce titre, et le fichier dans lequel il faut aller le trouver.

C’était le dernier. Vous pouvez retourner à une activité normale.

Laisser un commentaire

Advertisment ad adsense adlogger