Compresser un ePub: ma méthode pour réduire la taille d’un ePub

Lorsque j’ai terminé mon ebook, je l’ai tout naturellement exporté et j’ai obtenu un fichier ePub de… 160Mo. C’est beaucoup trop. Il est nécessaire de compresser un ePub avant de le publier car les distributeurs (Amazon en premier), facturent le coût de la distribution en fonction de la taille du fichier. Avec ma méthode, j’ai obtenu un ePub de 29Mo: 80% de compression. Pas mal non?

Réduire la taille d’un ePub: quels éléments?

Fichier ePub trop lourd? Pour alléger un ePub, on va parler compression. La 1ère source d’éléments à compresser dans un ePub, ce sont les images! Dans mon cas, elles représentent 90% de la taille de mon eBook.

On peut trouver aussi d’autres sources d’optimisations comme le nombre de police intégrés.

Structure d’un fichier ePub

Comprenons déjà la structure d’un fichier ePub. Un fichier ePub est une archive Zip d’une structure bien définie:

  • le 1er fichier de l’archive est mimetype. Il ne doit pas être compressé.
  • un dossier « META-INF » contenant quelques informations de base sur la structure.
  • un autre dossier, « OPS » ou « oebps » contenant les données du ePub.

Le fichier mimetype permet aux applications qui vont lire ce fichier de le considérer comme un fichier spécial de type application/epub+zip, et pas comme une simple archive zip.

Le contenu du fichier mimetype fait exactement 20 caractères, sans saut de ligne à la fin:

application/epub+zip

Ce que ça veut dire, c’est que nous allons pouvoir dézipper le ePub pour comprendre ce qui prend de la place afin de pouvoir compresser un ePub en conséquence.

Commencez donc par dézipper le fichier ePub. Vous pouvez ajouter l’extension .zip pour vous aider. Sur macOs, via le terminal, la commande est:

flogg@MacBook:~/ePub$ unzip MonEBook.epub

On obtient la structure:

flogg@MacBook:~/ePub$ ls
META-INF/   OPS/        MonEBook.epub  mimetype

Réduire la taille d’un ePub: les images

Aller donc voir la taille du dossier OPS/images/. Il est énorme? Parfait, on va pouvoir compresser.

L’analyse dépend de chaque cas. Je vous raconte le mien mais le votre pourrait être différent.

Premier constat, je n’ai que des fichiers PNG. Clairement, ce n’est pas le format le plus efficace pour mon type de contenu. On préférera le format JPEG. Ce changement n’est valable que pour les images que n’ont pas besoin de fond transparent. Pour ces dernières, il n’y a pas d’autres choix que de conserver le format PNG.

Deuxième constat, ces fichiers ne sont pas optimisés du tout. Une simple optimisation des fichiers en suivant les recommandations de Google m’a permis de gagner 50Mo.

Convertir les images d’un ePub en JPEG

Les fichiers ePub supportent 4 types de fichiers images:

  • PNG
  • JPEG
  • GIF
  • SVG

Pour convertir de JPEG en PNG, j’utilise ImageMagick en ligne de commande sur macOs. Rappel: la transformation va remplacer les images au fond transparent par un fond blanc (-background white).

flogg@MacBook:~/ePub$ convert ./OPS/images/image.png -background white -alpha remove ./OPS/images/image.jpg
flogg@MacBook:~/ePub$ rm ./OPS/images/image.png

Il faut maintenant changer toutes les références de ce fichier dans tout votre ePub:

  • OPS/epb.opf: Ce fichier contient un inventaire des fichiers de l’ePub. Il faut remplacer une ligne comme:
<item id="dataItem5" href="images/image-1.png" media-type="image/png"/>

par

<item id="dataItem5" href="images/image-1.jpg" media-type="image/jpg"/>
  • OPS/page-xxx.xhtml: Ce fichier contient une page de votre ePub. Il suffit de remplacer toutes les occurrences de images/image-1.png par images/image-1.jpg

Répétez l’opération pour toutes les images. Vous pouvez automatiser l’opération de renommage des occurrences avec sed, par exemple:

flogg@MacBook:~/ePub$ sed -i'' -e "s/images\/image-1.png/images\/image-1.jpg/g" ./OPS/page-*.xhtml
flogg@MacBook:~/ePub$ sed -i'' -e "s/href=\"images\/image-1.png\"\ media-type=\"image\/png\"/href=\"images\/image-1.jpg\"\ media-type=\"image\/jpeg\"/g" ./OPS/epb.opf
flogg@MacBook:~/ePub$ rm ./OPS/*-e

La simple conversion de mes fichiers PNG en JPG m’a permis de compresser un ePub de 60% (157Mo > 63,1Mo).

Compresser les images d’un ePub

Que les images soient au format JPG ou PNG, c’est pareil et c’est très simple. Compresser toutes les images avec un programme comme ImageOptim, en suivant les recommandations de Google pour l’optimisation des images. Oui, on va dégrader la qualité de certaines images mais ce sera difficilement visible à l’oeil.

J’ai obtenu une compression d’environ:

  • 30% pour les fichiers PNG
  • 50% pour les fichiers JPG

Supprimer les images en doublon

Dans mon cas, j’utilise à plusieurs reprises une même image (un rond rouge). L’image de ce rond rouge est présente plus de 50 fois, avec un nom différent.

On peut compresser un peu plus l’ePub en ne conservant qu’une occurence de cette image et en remplaçant toutes les occurrences dans les fichiers page-xxx.html et epb.opf.

Je n’ai pas fait cette optimisation car le gain était assez minimes dans mon cas (moins de 1Mo).

Réduire la taille d’un ePub: les polices

Si vous incorporez les polices dans votre ePub, elles sont enregistrés dans le dossier OBS/fonts/.

Vérifiez les polices incorporées, et si elles sont toutes justifiées.

Dans mon cas, j’ai découvert 2 polices inutiles incorporées:

  • « Wingdings »: pour 2 malheureuses puces rondes.
  • « FontAwesome5Pro-Solid-900.otf »: pour 2 petites icônes grasses alors que les autres ne le sont pas

Remplacer ces polices dans votre éditeur d’eBook afin qu’elles ne soient pas présentes à l’exportation.

Réduire la taille d’un ePub: reconstruire le fichier

Pour reconstruire le fichier, il faut suivre correctement et à la lettre le format ePub. Suivez le guide ici: Reconstruire un fichier ePub

Compresser un ePub: comparatif des améliorations

Voici un récapitulatif des gains possibles avec mon fichier de base:

ÉtapePoids du fichiers
Origine160Mo
Optimisation PNG-57Mo
Conversion JPG-100Mo
Conversion JPG
+ Optimisation
-130Mo
Suppression des polices inutiles-3Mo
Suppression des images en doublons-1Mo

Pour mon eBook, j’ai choisi de convertir en JPG, optimiser les images et supprimer les polices inutiles et j’ai finalement obtenu un ePub de 29Mo! YEAH!

Logiciel pour écrire un eBook: lequel choisir pour Mac et Windows?

Quand j’ai débuté l’écriture de mon eBook, je me suis demandé comme vous: quel logiciel pour écrire un eBook dois-je choisir? C’est une question très importante car il serait très dommage de devoir refaire la mise en page à la fin.

Voici une liste d’éditeur WYSIWYG (Ce que tu vois, c’est ce que tu auras). J’ai commencé avec un logiciel de cette liste mais j’ai depuis changé pour le Markdown. Aucun logiciel WYSIWYG ne donnera un résultat si efficace que le Markdown.

Créer un eBook sur Mac

Créer un eBook sur Mac, c’est le plus simple. Apple propose 2 logiciels gratuits qui permettent de créer des livres numériques:

Apple iBooks Author est plus restrictif. Si vous voulez écrire un livre ayant peu d’éléments graphiques (un roman par exemple), iBooks Author sera idéal.

Apple Pages est plus complet, permet de faire plus de chose, de placer des éléments graphiques à des endroits précis, etc. C’est le bon choix si vous voulez écrire un livre numérique ayant beaucoup d’images.

Les deux solutions sont parmi les meilleurs. Vous pourrez écrire un bel ebook avec un logiciel agréable.

Les deux permettent d’exporter le fichier en format ePub v3, en PDF, ainsi que la publication directement dans Apple Books.

Créer un ePub avec Word

Non.

Microsoft Word ne permet pas l’exportation au format ePub. Il existe plusieurs logiciels, dont Calibre, permettant de convertir un fichier .docx en format ePub. Mais n’espérez pas grand chose. Ces convertisseurs fonctionnent très bien avec un document simple mais deviennent inutile si vous utilisez des polices particulières à intégrer ou une mise en page figée (fixed layout).

Créer un ePub avec LibreOffice

LibreOffice est le célèbre « clone » de Microsoft Office, en version libre et gratuite. Il fait parti des pépites du monde du libre, avec Mozilla Firefox, Linux, etc…

Depuis LibreOffice 6.1, il est possible de créer un document avec Writer et de l’exporter au format ePub, y compris les documents avec une mise en page figée.

Pour télécharger LibreOffice, ça se passe ici: https://fr.libreoffice.org/download/libreoffice-stable/

Pour installer LibreOffice sur Windows:

C:/> choco install libreoffice-fresh

Pour installer LibreOffice sur Mac:

flogg@MacBook:~$ brew cask install libreoffice

Créer un ePub avec Calibre

Calibre, c’est un peu le couteau suisse du ePub. Il permet de convertir, visualiser, cataloguer des livres numériques.

Calibre ne va pas permettre d’écrire un ePub, mais permettra de convertir un fichier Word (.docx) en ePub par exemple.

Pour installer Calibre sur Windows:

C:\> choco install calibre

Pour installer Calibre sur Mac:

flogg@MacBook:~$ brew cask install calibre

J’ai essayé de l’utiliser. Il propose de tout faire, je confirme. En revanche, le résultat que j’obtenais était systématiquement décevant. J’imagine qu’en sachant très bien l’utiliser, il est capable de grandes choses. Toutefois, pour un novice, c’est un logiciel trop complexe. La conversion en format MOBI (Kindle) est trop ancienne et non recommandé par Amazon. Les autres conversions n’ont jamais donné un rendu correct.

Créer un ePub avec InDesign

Adobe InDesign, c’est le logiciel le plus cher pour créer un ePub. Créer un ePub avec InDesign nécessite de s’abonner à Adobe Creative Cloud pour 23,99€ minimum.

C’est certainement un très bon logiciel, largement utilisé pour la mise en page dans le journalisme.

Pour créer un ePub, il y a d’autres logiciels, moins cher ou gratuit qui permettent d’obtenir un niveau de qualité largement suffisant. C’est votre contenu qui est important et pas les artifices :).

Créer un ePub à partir d’un PDF

Je n’ai pas trouver de logiciel suffisamment bon pour convertir un PDF en ePub en conservant toutes les informations (mise en page, image, police, etc.).

En revanche, Amazon fournit un logiciel permettant de convertir un PDF en un format compatible avec la distribution via Amazon Kindle: Amazon Kindle Create.

Après avoir importé votre fichier d’origine en PDF, vous pourrez le convertir en format KPF qu’il sera ensuite possible de distribuer via Amazon. L’opération est simple et rapide, il suffit d’installer Amazon Kindle Create sur son ordinateur.

Comparatif: Logiciel pour écrire un eBook/ePub?

Si vous avez un Mac, la solution est claire: Pages.

Sur Windows, la solution est également claire: LibreOffice. C’est le seul logiciel réputé permettant d’exporter au format ePub.

Ces 2 solutions sont gratuites! Pas besoin d’investir dans un logiciel pour créer un eBook. Maintenant, concentrez-vous sur votre contenu, et débutez l’écriture! Quand vous aurez fini votre livre numérique, pensez à compresser votre ePub avant de le diffuser. Ça permettra d’économiser sur les frais de distributions de KDP.

Publié le
Catégorisé comme eBook Étiqueté ,

Reconstruire un ePub (rezipper le fichier) et le vérifier

Après avoir modifier un ePub, ou compresser un ePub, vous aurez besoin de reconstruire un ePub avant de le diffuser. Le fichier ePub est une archive zip ayant quelques spécificités qu’il faut suivre pour obtenir un fichier ePub valide et compréhensible par un maximum de liseuse.

Reconstruire un ePub

Pour reconstruire un ePub, la méthode est pareil quelques soit les logiciels que vous utilisez. Je fais ce tutoriel depuis macOs.

La reconstruction se passe en 3 temps:

  • Supprimer les fichiers temporaires
  • Créer une archive non compressée avec le fichier mimetype
  • Ajouter les autres informations compressées

Supprimer les fichiers temporaires de son ePub

Sur macOs, des dossiers cachés ._DS_Store sont créés à tout bout de champs. On va les supprimer de notre ePub pour ne pas les embarquer inutilement:

flogg@MacBook:~/ePub$ find . -name '.DS_Store' -type f -delete

Créer un fichier zip non-compressé

Le fichier mimetype doit être non-compressé et être le premier fichier de l’archive. On commence donc avec lui:

flogg@MacBook:~/ePub$ zip -X0 MonEbook.epub mimetype

-X permet de ne pas enregistrer les informations additionnels du fichier (propriétaire, groupe): -X: Do not save extra file attributes (Extended Attributes on OS/2, uid/gid and file times on Unix).

-0 permet de ne pas compresser

Ajouter les informations compressées de l’ePub

On peut compresser les autres informations de l’ePub, alors on va les compresser au maximum, en les ajoutant au fichier zip existant:

flogg@MacBook:~/ePub$ zip -rX9 MonEbook.epub META_INF OPS

-r permet d’incorporer tout le contenu des dossiers

-9 permet de compresser au maximum

Terminé. Le fichier ePub reconstruit est prêt! C’est normalement un fichier ePub valide, mais il est préférable de le vérifier.

Vérifier son ePub

Pour vérifier la qualité du nouveau fichier ePub, on peut utiliser le programme epubcheck. C’est la même vérification que Kobo Writing Life fera après l’importation de votre fichier.

Pour l’installer:

flogg@MacBook:~/ePub$ brew install epubcheck

Pour contrôler notre fichier epub:

flogg@MacBook:~/ePub$ epubcheck MonEbook.epub

Vous devez obtenir un ePub sans erreur, ou au moins sans plus d’erreur que dans votre fichier d’origine.

C’est tout! Le fichier est prêt à être distribuer, via Kobo Writing Life ou par vous même.

Publier un eBook sur Amazon Kindle en fixed layout

Après avoir créé mon ebook avec Apple Pages, j’ai obtenu un beau fichier ePub que j’ai pu compressé pour obtenir un fichier compressé.

Mon eBook est en fixed layout. C’est à dire que la mise en page ne peut pas être modifiée, le texte ne peut pas être agrandi ou réduit. L’avantage, c’est que mes éléments graphiques restent au bon endroit: je suis sûr que les lecteurs verront l’ebook comme je l’ai conçu.

J’upload mon fichier sur Amazon Kindle et je vérifie la Prévisualisation: rien ne va! Le format est bien respecté mais est tassé dans le coin supérieur droit.

J’ai passé des heures à lire la documentation officielle pour comprendre ce qui n’allait pas: il manque une balise dans l’ePub pour qu’Amazon l’interprète correctement.

L’information clef est au chapitre 10.1 du Amazon Kindle Publishing Guidelines (PDF): une balise « original-resolution » est nécessaire pour la bonne interprétation du format fixed layout.

<meta name="original-resolution"
content="1024x600"/>

Ok, c’est sympa, et alors? Pour vérifier si la balise est présente dans l’ePub, il faut:

  • Dézipper l’ePub
  • Ouvrir le fichier OPS/epb.opf

Faites une recherche de texte pour « original-resolution ». Dans mon cas, elle n’y était pas. Je l’ai donc ajouté moi-même. Première question: quel est ma résolution d’origine? Dans Apple Pages, j’ai choisi un format papier, en cm. Ça donne quoi en pixel?

Pour trouver la réponse, j’ai ouvert la 1ère page de mon ebook, c’est à dire le fichier OPS/page-1.xhtml. Vous devriez trouver une balise comme celle-ci:

<meta name="viewport" content="width=255.118px,height=453.543px"/>

Traduction: ma résolution d’origine est de 255×453.

Il suffit alors d’ajouter ma nouvelle balise dans le fichier OPS/epb.opf:

<meta name="original-resolution"
content="255x453"/>

ajouté juste après la balise

<meta property="rendition:layout">pre-paginated</meta>

Il ne reste plus qu’à reconstruire le fichier ePub correctement et le resoumettre à Amazon. Lors de la Prévisualisation, l’ebook apparaitra centré et prendra toute la largeur/hauteur disponible.

Cette astuce m’a bien aidé, même si au final, je n’ai pas soumis mon eBook à Amazon Kindle de cette manière là.

La raison est la suivante: mon eBook en format ePub fait 30Mo, après traitement par Amazon, il fait 60Mo. N’oublions pas qu’Amazon facture le coût de livraison en fonction du poids du fichier… merci!

Pourquoi un fichier Kindle est 2x fois plus gros? Il semble que le format converti contienne 2 eBook:

  • un premier, complet, avec les polices, compatibles avec les dernières liseuses/applications
  • un second, incomplet, sans certaines polices, sans lien mais compatibles avec leurs vieilles liseuses…

J’espère que cette astuce vous sera utile!

Écrire un ePub en Markdown

Ça y’est, je crois que j’ai trouvé la meilleure méthode pour écrire un livre électronique: le markdown! Pour écrire un ePub en markdown, c’est simple et ça permet de l’exporter facilement en PDF et EPUB. Le top du top, c’est que le fichier EPUB est très bien fait et facilement compatible avec les liseuses. Ce que je n’arrivais pas à faire avec les autres logiciels pour écrire un ePub.

C’est quoi le Markdown?

Markdown, c’est un format d’écriture simple qui permet une mise en forme basique (voir la page Wiki). Voici à quoi ressemble un texte markdown:

**Ceci est un passage écrit en gras**, la suite ne l'étant pas. On peut aussi écrire en *italique*.

Ceci est un passage écrit en gras, la suite ne l’étant pas. On peut aussi écrire en italique.

Le Markdown est très restrictif. On ne peut pas faire n’importe quoi avec. Ce n’est pas si souple qu’un Pages ou Word. Mais ces restrictions le rendent idéal pour écrire un livre électronique ePub. Pas de surprise: le « peu » de chose que l’on peut faire avec le Markdown sera parfaitement retranscrit dans le livre électronique, dans une syntaxe très pure. Avec les autres logiciels, plus souples, j’ai toujours obtenu un rendu qui paraissant bien mais qui devenait très très mauvais dès qu’on changeait de lecteur ePub (Apple Livres, Google Play Livres, Kobo, etc.).

Quels logiciels pour écrire en Markdown?

Moi, j’utilise tout simplement Visual Studio Code. C’est ce que j’utilise pour programmer également.

Pour ma femme, je lui ai installer MacDown qui a l’avantage de montrer un rendu du code en temps réel. C’est plus agréable de travailler ainsi pour un non-technicien.

Comment organiser ses fichiers pour écrire un livre électronique en Markdown

En écrivant le livre en Markdown, on sépare un peu plus les images, de la mise en page, du texte. C’est tout l’inverse d’un éditeur WYSIWYG (What you see is what you get).

Les sources d’un livre électronique écrit en markdown ressemble donc à ça:

mon-livre/
-- images/
-- -- image1.jpg
-- -- image2.jpg
-- 01-chapitre1.md
-- 02-chapitre2.md
-- style.css
-- metadata.yaml

On stocke les images dans un dossier spécial. On a un fichier md par chapitre. Enfin, on a un fichier configurant la mise en page style.css et un fichier contenant les méta-données du livre électronique metadata.yaml.

Finit le gros fichier de 200Mo contenant textes et images. A la place, on a un dossier image et plusieurs fichiers texte simple.

Comme les images sont dans un dossier distinct, il est très simple de les compresser efficacement. On se souvient que les images sont la principale sources de gains lorsque j’ai voulu compresser mon ePub.

Comment transformer du Markdown en ePub

Pour transformer un document Markdown en ePub, j’utilise le logiciel libre Pandoc. L’utilisation est très simple. D’abord, créer un fichier metadata.yaml avec les métadonnées du livre qui seront inclus dans le fichier ePub. Par exemple:

---
title: Mon super livre électronique
pagetitle: Mon super livre électronique
author:
- Florian Guillaumin
rights: © Florian Guillaumin, 2019
language: fr-FR
ibooks:
  version: 1.4
cover-image:
  images/cover.jpg
css:
  - pandoc.css
  - ebook.css
...

Ensuite, on génère le fichier avec la commande:

➜  ~ pandoc metadata.yaml *.md -o monLivre.epub

Après quelques secondes, le livre est prêt!

Comment transformer du Markdown en PDF

Pandoc sait le faire mais il y a mieux. En fait, le fichier crée par Pandoc est un peu moche. Il y a certain moyen de l’améliorer mais j’ai trouver un autre moyen: transformer le Markdown en une page web et « imprimer » cette page web en PDF. Pour imprimer en PDF, j’utilise le logiciel libre WkHtmlToPdf.

Les deux étapes sont donc:

➜  ~ pandoc metadata.yaml *.md -o monLivre.html --section-divs --self-contained
➜  ~ wkhtmltopdf monLivre.html monLivre.pdf

Le markdown, c’est pour moi la meilleure manière de gérer mes livres électronique. Et c’est encore plus maboule si vous utilisez Git et un CI/CD avec.

Par exemple, je gère les versions de mes livres sur GitLab. À chaque mise à jour, ça déclenche mon workflow automatique qui retaille les images (pour être compatible avec l’AppStore), crée le fichier ePub, vérifie le fichier ePub, crée le fichier PDF et si tout est bon, exporte même les nouvelles versions vers un dépôt S3. C’est depuis ce dépôt que les livres peuvent être téléchargés donc dès que je fais une mise à jour, elle est automatiquement disponible pour les utilisateurs dans les 10mn qui suivent: magique!

Publié le
Catégorisé comme eBook Étiqueté ,