Archives du mot-clé Sigil

Conversion d’un epub 2.0 au standard 3.0

Dans cet atelier, nous allons procéder à la conversion d’un epub aux spécifications 2.0 vers 3.0 sous Sigil 0.9.5 et vérifier que tout s’est bien déroulé. Pour cela, nous utiliserons une nouvelle fonctionalité de Sigil, les plugins (greffons).

Installation des greffons epubcheck et ePub3-itizer

1- Télécharger les plugins epubcheck et ePub3-itizer. Ne pas les dézipper.

2- Après avoir ouvert Sigil, menu Greffons (Plugins) —-> Gérer les greffons (Manage plugins). Là, cliquer sur Ajouter (Add) et aller chercher le greffon téléchargé. Puis clicker sur OK. Le greffon est maintenant présent, on peut lui attribuer une icône dans la barre d’outils de Sigil comme dans la capture d’écran ci-dessous avec epubchecker.

Gestion des greffons

Gestion des greffons

 Conversion au standard EPUB 3.0

Ouvrons un epub 2.0 valide (c’est à dire qu’il a passé la vérification avec epubcheck) et dans le menu des greffons est venu s’ajouter une catégorie, Sortie—->ePub3-itizer. Lançons-le pour procéder à la conversion du fichier.

Conversion

Conversion

J’utilise un fichier de test contenant des illustrations et des notes. La conversion se déroule bien. Il faut maintenant ouvrir le fichier epub3 généré. Les en-têtes dans le fichier content.opf reflètent le passage au 3.0 et dans l’arborescence, un fichier nav.xhtml a été créé.

<package prefix="rendition: http://www.idpf.org/vocab/rendition/#" unique-identifier="bookid" version="3.0" xmlns="http://www.idpf.org/2007/opf">
En-tête fichier content.opf

Vérification avec epubcheck

Passons maintenant le fichier à la validation du fichier epub 3.0 à l’aide du second greffon installé, epubcheck.  Un petit problème est detecté car la fenêtre de log epubcheck indique check finished with warnings or errors, visiblement un souci ayant trait avec un identifiant.

Greffon epubcheck

Modification du greffon

Cette erreur est étrange, car ces identifiants sont générés automqtiquements. Serait-ce un bug ? La capture d’écran ci-dessus montre que la version d’epubcheck utilsée pour la vérification est la 3.0.1, pas forcément la dernière si l’on se réfère au site officiel epubcheck affichant 4.0.1. Nous allons donc télécharger la dernière mouture et modifier le plugin epubcheck pour qu’il la prenne en charge. Pour se rendre à l’emplacement où se trouvent les dossiers des greffons, cliquer sur le  bouton — visible sur la première capture d’écran — « Ouvrir l’emplacement des préférences ». C’est également là que se trouvent les recherches sauvegardées, les clips et les préférences de Sigil. Le dossier plugins renferme un dossier epubcheck, notre greffon, qui lui même contient le binaire java que nous allons remplacer et le script python plugin.py qui assure l’exécution du plugin. Ici, en l’occurence, un simple wrapper qui lance epubcheck-3.0.1.jar.

 # define epubcheck command line parameters
    epc_path = os.path.join(plugin_path, 'epubcheck-3.0.1.jar')
    args = ['java', '-jar', epc_path, temp_dir, '-mode', 'exp']
Wrapper

Supprimons epubcheck-3.0.1.jar et son dossier lib et remplaçons les par le contenu de la dernière version que l’on a téléchargée et son dossier lib. Il faut à présent éditer le fichier python plugin.py  (extrait ci-dessus) et modifier l’ancien nom de la cible pour le nom du fichier jar téléchargé. Les modifications faites, relançons le greffon. Miracle, cette fois, la vérification est OK ! Bien entendu, à condition deconnaître python, il est possible de concevoir des tas d’extensions utiles ou originales, comme Borkify, qui modifie le texte pour un rendu audio qui change d’accent.

Token not allowed here Check finished with warnings or errors

Lors de la validation du fichier epub avec epubcheck, il est impératif de s’assurer que l’on utilise bien la dernière version d’epubcheck en se rendant sur la page https://github.com/IDPF/epubcheck/.

L’erreur Token ‘<‘ not allowed here, par exemple, ne sera pas forcément détectée avec une version d’epubcheck antérieure à 3.0, comme le montrent les tests suivants, réalisés avec les 3 versions antérieures :

Check4.0logs

Comme le précise le fichier erreur généré par epubcheck, « C:/Users/hp/Desktop/sample.epub/OEBPS/Styles/Style0001.css(15): Token ‘<‘ not allowed here »,  le problème est causé par un caractère non autorisé se trouvant dans la feuille de style à la ligne 15.

Bien que l’outil interne de validation Sigil ne détecte aucune erreur (« Aucun problème trouvé ! »), il est toujours prudent d’utiliser la validation des feuilles de style intégrée à Sigil qui envoie la feuille de style sur http://jigsaw.w3.org/css-validator/ :

validationW3C

validation_CSS

 

Incorporer des fontes de caractères à un ebook

Il est parfois nécessaire d’intégrer des polices (fontes) de caractères au livre numérique pour restituer des glyphes (pictogrammes par exemple) ou divers enrichissements, ou encore pour des textes utilisant des caractères non latins.

Il faut alors incorporer ces jeux de caractères spéciaux dans le fichier epub et les déclarer dans une feuille de style avec le code @font-face. Dans notre exemple, nous allons utiliser des polices libres de droit et tester leur rendu sous Sigil, sous ADE, et sous Kindle Previewer.

Rendu des fontes de caractère sous Sigil

Rendu des fontes de caractère sous Sigil

Le code HTML produisant le rendu des polices ci-dessus dans Sigil est le suivant :

<p class= »Police1″>POLICE ALEGRYA</p>
<p class= »Police2″>POLICE ANCILLARY</p>
<p class= »Police3″>POLICE LINUX LIBERTINE</p>
<p class= »Police3″>PICTO POSTE <span class= »pic »>m</span></p>
<p class= »Police3″>PICTO AVION <span class= »travel »>z</span></p>

@font-face { font-family: "Linux Libertine"; font-style: normal; font-weight: normal; src: url("../Fonts/LinLibertine_Rah.ttf");}
@font-face { font-family: Pictos; font-style: normal; font-weight: normal; src: url("../Fonts/modernpics.otf"); }
p.Police3 { font-family: "Linux Libertine"; font-style: normal; text-align: center; }
span.pic { font-family: "Pictos", sans-serif; font-style: normal; font-weight: normal; color: blue;}

Il est possible que la validation par epubcheck génére une erreur :
WARNING: E:/eForge/Sandbox/Polices.epub: resource OEBPS/Fonts/Alegreya-Bold.otf cannot be decrypted
WARNING: E:/eForge/Sandbox/Polices.epub: resource OEBPS/Fonts/Ancillary-Regular.otf cannot be decrypted
WARNING: E:/eForge/Sandbox/Polices.epub: resource OEBPS/Fonts/LinLibertine_Rah.ttf cannot be decrypted
WARNING: E:/eForge/Sandbox/Polices.epub: resource OEBPS/Fonts/modernpics.otf cannot be decrypted
WARNING: E:/eForge/Sandbox/Polices.epub: resource OEBPS/Fonts/travelcons.ttf cannot be decrypted

Check finished with warnings or errors

Cette erreur peut également s’afficher lorsque le fichier a été produit par une version d’Indesign antérieure à Creative Cloud. En effet, lors de l’export au format Epub depuis Indesign, lorsque l’on choisissait d’incorporer les polices utilisées dans le fichier, Adobe – pour des raisons de copyright – « estropiait » les fontes de caractère en compressant la taille du fichier de police, modifiait son nom, et ajoutait au fichier epub généré un fichier encryption.xml. Lors de l’upload sur Amazon ou Barn & Nobles, le fichier était rejeté avec ce message :

We have found a file name called encryption.xml within your ePub file container, which means that part of, or all of, your file is encrypted. We do not accept any encryptions within ePub source files.

Dans le cas d’Indd, le plus simple consistait à ne pas exporter les polices, pour ensuite les incorporer à l’ebook sous Sigil. Pour en revenir à l’erreur, comme le montre la capture d’écran précédente, il est possible que les polices aient été « dissimulées » (obfuscated) pour des raisons de copyright; il faut donc cocher « aucun » afin que les polices ne soient pas encryptées et passent la validation epubcheck.

Notre epub comporte des polices libres de droit dont les extensions sont TTF et OTF. Lors de la conversion au format Kindle, une erreur apparait dans Kindle Previewer :

Avertissement(prcfile):W14029: CFF/Type1 (Postscript) de pipeline dans votre source peuvent ne pas apparaitre clairement sur tous les lecteurs Kindle. Veuillez vous reporter aux Directives de publication Kindle pour l’utilisation recommandée des polices incorporées. Fichier de police : C:\Users\eForge\AppData\Local\Temp\mbp_7DD_C_1C_0_24_2E_1CC_F54_14C_1\OEBPS\Fonts\modernpics.otf
Info(prcgen):I1014: Conversion et fusion du fichier média « C:\Users\eForge\AppData\Local\Temp\mbp_7DD_C_1C_0_24_2E_1CC_F54_14C_1\OEBPS\Fonts\travelcons.ttf »

Il semblerait que les polices de type OTF fassent tousser le convertisseur Kindlegen. En ne laissant dans le fichier epub que la police Linux Libertine pourvue d’une extension TTF, la compilation se déroule bien.

TTF

Génération du fichier Mobi sans erreur, en utilisant LINUX LIBERTINE (TTF)

Cependant, dans les deux cas, le rendu parait aléatoire comme le montre la capture ci-dessous:

Mismatch

Rendu à gauche dans Kindle Previewer de la fonte LINUX LIBERTINE, et à droite, dans Kindle4PC, des fontes OTF qui provoquaient l’erreur de compilation

Conclusion : les résultats obtenus sont très aléatoires, et, à moins de possèder une multitude de supports de lecture pour tester les ebooks produits, l’incorporation de fontes de caractères dans un epub n’est pas recommandée. Dans tous les cas, il faut toujours incorporer dans le fichier epub, en plus des polices, un fichier xml nommé com.apple.ibooks.display-options.xml ;

 

<?xml version="1.0" encoding="UTF-8"?>
<display_options>
<platform name="*">









<option name="specified-fonts">true</option>
</platform>
</display_options>
com.apple.ibooks.display-options.xml

 

 

Son rôle consiste à remplacer les polices utilisées par défaut sur le support Apple par celles qui ont été definies dans l’ebook.

 

Quelques outils de fabrication d’un epub

Structure d’un fichier epub

Ce blog s’adressant à des auto-éditeurs, nous ne rappellerons pas ici les bases de l’édition et supposons acquises les notions de style et de typographie.

Il existe bien des façons de préparer un ebook ; cependant, la méthodologie suit toujours le même principe. Il s’agit de transformer un texte numérisé, qui se lisait dans un éditeur de texte, en un texte au format epub, pour une lecture sur liseuse, tablette, smartphone ou autre support.

Nous effectuerons des tests avec un texte court, comportant quelques styles de paragraphe (Titre, Standard et Note) que nous convertirons au format epub avec différents outils. Notre ebook comportera également une image avec habillage, ainsi qu’un lien vers une note de bas de page.

Styles

Styles utilisés

Qu’est-ce qu’un fichier epub, en somme ? Ce n’est pas autre chose qu’un dossier zippé comprenant une arborescence de fichiers, texte, feuilles de style et images notamment. Toute la conversion consiste donc à transformer notre texte édité en code HTML qui sera « compris » par le support de lecture.

odtzip

Fichier odt décompressé et son contenu HTML

Un bon outil de conversion est celui qui respectera les styles appliqués et restituera un code HTML propre.

Les outils gratuits

Méthode manuelle

Nous allons réaliser notre premier epub avec les logiciels libres Open Office dans sa version 4.0.1 et Sigil. Notre texte se présentera donc sous la forme d’un fichier avec une extension odt. Sauvegardons-le au format HTML puis ouvrons le fichier dans un éditeur de texte gratuit (Notepad++ par exemple) et analysons le code généré.

On y observe tout d’abord un certain nombre de balises de type META :

<META NAME="GENERATOR » CONTENT="OpenOffice 4.0.1 (Win32)">
<META NAME="AUTHOR » CONTENT="eForge">
<META NAME="CREATED » CONTENT="20131111;16190000">
<META NAME="CHANGEDBY" CONTENT="eForge « >
<META NAME="AppVersion » CONTENT="14.0000">
<META NAME="Company » CONTENT="Microsoft">
Balises META

Puis vient notre texte, mais privé des styles de paragraphe que nous lui avions appliqués dans l’éditeur. Nos styles (Titre, Standard, Note) ont disparu et ont été remplacés par des balises header (<H1>) ou paragraphes (<P>) dotés d’attributs de type align, margin, font-size.

ODTHTML

Export du fichier dans Open Office, au format HTML

<H1 ALIGN=CENTER>DELHI</H1 → Ici, on aurait dû retrouver le style Titre

<P STYLE=margin-bottom: 0.35cm>Le nom de Dehli</P → Là, on aurait dû retrouver le style Standard

<P STYLE=margin-bottom: 0.35cm><FONT SIZE=2><A NAME= »sdfootnote1sym » HREF= »#sdfootnote1anc »>1</A></P → Là, on aurait dû retrouver le style Note

Si le document ne comporte qu’un nombre restreint de styles, quelques rechercher/remplacer dans Sigil en utilisant le mode Regex auront tôt fait de nettoyer tout cela. Ainsi, dans cet exemple, nous observons que l’attribut font-size=2 suffit pour distinguer le style Standard du style Note ; il suffirait donc de rétablir d’abord le style Note, puis le style Standard, puis le style Titre (les headers h1), ce qui serait rapide et simple.

Une astuce permet de retrouver le code sans avoir à passer par ce stade de conversion : un fichier « .odt » ayant la même structure qu’une archive compressée, on peut en effet en extraire, en le dézippant, le code de notre texte, avec nos styles, qui se trouve dans le fichier content.xml.

En éditant le fichier, on voit que les styles de paragraphes ou de caractère sont encadrés par des balises du type <text:p text:style-name= »nom du style« >. Là encore, un bon usage de Regex sous Sigil ou dans un éditeur de texte avancé permettra en quelques clics de remplacer ces balises par un code HTML propre.

À présent, nous disposons de notre texte stylé muni de balises HTML (paragraphes avec leur classe de style, enrichissements italiques, gras…) qu’il convient de charger dans Sigil. Si on dispose de Firefox, il existe un plugin, Grabmybook qui va générer directement un fichier epub depuis l’onglet ouvert dans le navigateur. Nous associons à ce fichier HTML une feuille de styles que nous avons préalablement définie et le tour est joué !

Méthode automatisée

Des extensions destinées à la conversion automatique au format epub ont été développées pour Open Office. Sous sa dernière version 4.0, nous n’avons pas été en mesure de les faire fonctionner. Cependant, les tests que nous avions effectués sur des versions antérieures avaient donné des résultats médiocres. Un logiciel gratuit, développé par Alkinea, convertit les fichiers odt au format epub et même mobi, si kindlegen est présent sur la machine.

Akinea

Export du fichier avec Alkinea

Une validation par epubcheck montre l’erreur suivante, qui traduit un problème de déclaration de la table de navigation dans la « check-list » de l’epub, le fichier content.opf :

ERROR: E:/eForge/Sandbox/OUTILS/Test.epub/OEBPS/content.opf(19,20): item with id ‘ncx’ not found
WARNING: E:/eForge/Sandbox/OUTILS/Test.epub: item (OEBPS/toc.ncx) exists in the zip file, but is not declared in the OPF file

Vu qu’il n’y a pas de table des matières, à ce stade, ceci n’est pas bien grave.

Mais l’ouverture du fichier avec Sigil va révéler d’autres soucis :
– le renvoi de note n’a pas été compris et la note se trouve maintenant accolée à son renvoi dans le corps du texte ;
– les styles de paragraphes ne figurent pas dans la feuille de style générée : il faudra donc tous les réintégrer ;
– l’image de couverture a été flanquée d’un attribut height qui l’anamorphose : <img alt= »Cover » height= »100% » src= »../Images/cover.jpg »/>
– la version Kindle générée ne passe pas par le mode verbose, ce qui est inquiétant puisque l’epub source était défectueux.

Les outils payants

Méthode manuelle

Word, d’un emploi courant, permet de sauvegarder le texte au format HTML filtré. Cependant, le code généré par MSWord n’est pas très propre et exige un nettoyage, même si les styles de paragraphe sont conservés. Il suffira, comme indiqué précédemment, de quelques remplacements pour supprimer les classes de style parasites, de type MsoXXXX. En revanche, les liens sont préservés, tout comme les enrichissements.

MSword

Export HTML filtré depuis MSWord

Une autre solution pour obtenir un code HTML plus propre : s’envoyer son propre fichier « .doc » en pièce jointe sur un compte mail Google (gmail). Une fois le mail reçu, passer en mode d’affichage de la pièce jointe HTML et afficher/copier le code source de la page. Comme on le voit dans la capture ci-dessous, le code est relativement propre :

Google Html

HTML généré par Google

Méthode automatique

E-Book Tools, est une extension gratuite (en anglais/néerlandais) pour Word qui convertit le fichier doc en epub. L’outil est paramétrable, conserve les styles de paragraphes, effectue un nettoyage du code HTML puis un export au format epub avec l’ajout d’une couverture, de métadonnées et bien plus encore ¦

E-book Tools

Génération du code HTML et export de l’epub avec e-Book Tools

Le fichier epub généré est presque parfait.

Les outils professionels

La Rolls de l’édition, Indesign CS6, permet d’exporter automatiquement les contenus au format epub (ou mobi si l’on installe le plugin Kindlegen). Les nouveaux aménagements d’Indesign CS6 dans sa version Creative Cloud ont eu une incidence considérable sur la génération de fichiers epubs. Parmi les nouveautés, l’export d’un index (linké s’il vous plaît), la prise en charge des objets (ce qui permet d’ancrer une image), l’ajout d’un fichier pour la prise en compte des polices (pour Apple), des fontes embarquées qui fonctionnent, la liste est ici… Mais tout cela a un prix.

Indd

Export epub avec Indesign CS6

Les messages d’erreurs d’epubcheck lors de la validation epub

Dans un précédent billet, nous avons présenté l’outil de validation des fichiers epub, epubcheck. Bien souvent, le fichier journal créé lors de la validation affichera des erreurs que Sigil n’a pas repérées. En voici quelques-unes, ainsi que les solutions pour corriger le problème.

epub length of the first filename in archive must be 8 but was 22

Pour répondre aux spécifications d’Apple, il est nécessaire, lorsqu’on embarque des polices, d’ajouter un fichier xml dans le squelette du fichier epub. Un fichier epub n’est rien d’autre qu’une archive compressée disposant de divers répertoires selon l’arborescence suivante :

Structure fichier epub

Structure fichier epub

Après l’ajout de ce fichier com.apple.ibooks.display-options.xml dans le répertoire META-INF, le message d’erreur suivant peut se retrouver dans le fichier journal lors de la validation epubchek : « ERROR: test.epub: epub length of the first filename in archive must be 8 but was 22 »

Solution : Dézipper l’ensemble. Puis zipper le fichier mimetype seul (sous Windows, Clic droit > Envoyer vers > Dossier compressé) et lui donner un nom, par exemple book.zip (original !). Glisser-déposer à présent les deux dossiers META-INF (ce dernier contenant le fichier d’Apple) et OEBPS dans book.zip (vous aurez besoin de WinRar ou WinZip, 7z ne fonctionne pas). Changer l’extension « .zip » en « .epub ». Repasser par la validation epubcheck.

element « metadata » incomplete; missing required elements « dc:language » and « dc:title »

L’erreur se produit car le fichier content.opf, qui recense les éléments contenus dans l’arborescence epub (images, styles, fichiers html, etc.), doit comporter des champs obligatoires, comme le titre et le langage de l’ebook. Solution : éditer le fichier de métadonnées dans Sigil et y rajouter les éléments manquants ; ou éditer le fichier content.opf dans un éditeur de texte et renseigner les champs comme suit : <dc:title>Titre de mon livre</dc:title> <dc:language>fr</dc:language>

The « id » attribute does not have a unique value!

Cette erreur, tout comme la précédente, est détectée par Sigil. Elle signifie que l’identifiant servant de cible à un lien interne de type <href = »chemin#identifiant est employé au moins deux fois. Solution : Il suffit de rechercher l’identifiant en question et de lui affecter une autre valeur en n’oubliant pas de mettre à jour le lien, sous peine de générer une nouvelle erreur, qui est la suivante :

fragment identifier is not defined in OEBPS/Text/…

Ce problème, qui n’est pas détecté par Sigil, provient d’un lien cassé. Un lien pointe vers un signet qui n’est pas défini dans le manuscrit. Le message ci-dessous indique que le lien se trouvant dans le fichier intro, à la ligne 9, ne trouve pas le signet toto sur la page debut : ERROR: C:/Users/eForge/epub.epub/OEBPS/Text/intro.xhtml(9,142): ‘toto‘: fragment identifier is not defined in ‘OEBPS/Text/debut.xhtml’ Check finished with warnings or errors Solution : Relinker (rééditer le lien) en affectant un identifiant à la cible du lien.

remote resource reference not allowed; resource must be placed in the OCF

Le message signifie que le fichier epub fait appel à un élément extérieur à sa structure qui ne se retrouve pas dans l’espèce d’inventaire que constitue le fichier content.opf. Solution : Intégrer l’élément (souvent une image) au fichier epub.

required elements missing, bad value for attribute « xxx »

Les sources de cette erreur sont multiples et décelables avec Sigil. Elle se rapporte aux attributs obligatoires lors de l’utilisation de certaines balises, par exemple : – la balise body est obligatoire ; – img a besoin des attributs alt ou src ; – les identifiants de type id ne peuvent pas commencer par des chiffres, ni contenir des caractères accentués ou des espaces. Solution : Il est conseillé de vérifier la syntaxe des pages HTML de l’epub avec le Markup Validation Service du W3C, un outil gratuit disponible en ligne.

assertion failed: different playOrder values … that refer to same target, playOrder sequence has gaps

Ce problème se présente lorsque la table de navigation a été modifiée, par exemple lorsqu’on souhaite préparer un extrait d’un ebook et que l’on édite manuellement le fichier toc.ncx.

Solution : Vérifier qu’il n’y a pas de doublons dans le fichier toc.ncx ; vérifier la cohérence de l’ordre séquentiel des balises <navpoint>. À dire vrai, il est souvent plus rapide de regénérer une table de navigation que de résoudre ce genre d’erreurs. Nous n’avons évoqué ici que les types d’erreurs les plus fréquents. N’hésitez pas à nous aider à en dresser une liste plus complète !

À bientôt.

L’outil de validation des fichiers epub : epubcheck

Sous Sigil, la vérification de votre fichier epub avec Flight Crew, la petite coche verte en haut à droite de votre barre d’outil (ou F7), détectera la plupart des problèmes. Mais elle n’est pas exempte d’oublis, comme on le verra plus bas. Malgré le message “Aucun problème trouvé !”, le fichier epub présente des erreurs qui, elles, seront détectées par epubcheck. Cette validation constitue une étape indispensable avant d’uploader vos ebooks sur une plateforme de distribution (librairie numérique).

Si vous êtes sous Windows, vous pouvez créer un petit fichier de commande .bat avec le code ci-dessous pour y glisser-déposer les fichiers epubs dont vous souhaitez valider le contenu. Assurez-vous que l’emplacement du fichier epubcheck-3.0-RC-1.jar correspond bien au chemin_de_epubcheck dans le code ci-dessous :

@ECHO ON
java -jar C:\chemin_de_epubcheck\epubcheck-3.0-RC-1.jar %1 2>  C:\Users\%USERNAME%\Desktop\fichierlog.txt
pause

Vous pouvez également télécharger une version (en français s’il vous plaît) disposant d’une interface graphique, epub-checker.

 

Glisser déposer le fichier epub à valider avec epubcheck

Glisser déposer le fichier epub à valider avec epubcheck

 

Si votre fichier epub n’est pas conforme au standard de l’IDPF (autrement dit, qu’il contient des erreurs), un fichier journal détaillant les erreurs sera généré sur le bureau :

Epubcheck détecte une erreur passée inapercue sous Sigil

Epubcheck détecte une erreur passée inapercue sous Sigil

 

Vous voyez que epubcheck détecte l’absence d’une balise-ancre ; Sigil ne l’a pas repéré.

Validation réussie

Validation réussie

Si la validation est positive, la fenêtre de commande renvoie le message ci-dessus.

À suivre : Petit topo sur les messages d’erreur délivrés par la validation epubcheck, et comment y remédier.

À bientôt !