Livre, Ruby, Source Ouverte
     

Générer des livres ePub à partir de HTML

Convertir un seul fichier HTML en ePub est simple, avec de nombreux outils gratuits disponibles à cette fin. Mais, si votre objectif est de convertir plusieurs fichiers HTML, et seulement une partie de chaque fichier, en un livre électronique avec une table appropriée de contenu, image de couverture, etc, que faites-vous?

C’était exactement le carrefour où je me suis retrouvé en essayant de créer une version ePub de mon livre. Chaque chapitre du livre était représenté par une page Web unique, et j’avais besoin d’un moyen automatisé de télécharger rapidement tous ceux et de les combiner dans un livre électronique. Pour rendre les choses plus intéressantes, seule une partie de chaque page était nécessaire – qui veut voir l’en-tête d’une page Web, footer, et la barre de navigation sur un ePub? En outre, les images devaient être téléchargées et intégrées dans l’ePub, et les extraits de code Github Gist devaient être téléchargés et représentés sans l’utilisation des balises Javascript de Github.

Toutes ces exigences sont nécessaires pour créer un ePub professionnel, mais pourtant étonnamment aucun outil n’existait qui pourrait faire toutes ces choses sans effort manuel considérable. Comme tout bon développeur de logiciels, si aucun outil n’existe pour un travail, et la seule autre option est le travail manuel, j’ai pris le chemin le plus paresseux et créé un nouvel outil pour faire le travail.

Présentation html2epub

Ce nouvel outil s’appelle html2epub et est une application de ligne de commande qui peut :

  • Générer un ePub à la recherche professionnelle à partir d’une série de pages Web
  • Dénuder html inutile
  • Convertissez html en XHTML pour vous conformer à la spécification ePub
  • Images d’intégration
  • Intégrer des extraits de code Gist
  • Réécrire les liens chapitre à chapitre pour une navigation ePub appropriée
  • Prise en charge de la navigation de la table des contenus
  • Prise en charge de l’authentification basée sur les formulaires

J’ai essayé de garder cet utilitaire aussi simple à utiliser que possible, malgré ses nombreuses fonctionnalités. Voyons comment commencer.

 

Commencer

Sur macOS installer html2epub est grandement simplifié par brew. Il suffit d’exécuter:

brew install jwhitehorn/brew/html2epub

Cela permettra de télécharger et d’installer htmlepub, et ses dépendances, et d’enregistrer la commande dans votre PATH. Avec cela terminé, vous pouvez générer un ePub aussi facilement que:

html2epub --url https://www.datasyncbook.com \
    --toc ./example/toc.xhtml \
    --cover ./example/cover.png \
    --contents ./example/contents.json \
    --title "Data Synchronization" \
    --subtitle "Patterns, Tools, & Techniques" \
    --author "Jason Whitehorn"

C’est-à-dire, en supposant que vous avez déjà quelques fichiers de configuration – dont nous allons discuter dans un instant. La raison en est que je préfère avoir un outil qui était facile à invoquer encore et encore, sur une durée de temps, même si cela signifiait la création d’un couple de fichiers config sur le départ. Plus précisément, lorsque j’écris Data Synchronization: Patterns, Tools, & Techniques, j’avais besoin d’un moyen facile de générer une distribution ePub au fur et à mesure que de nouveaux contenus sont publiés.

Il ya trois fichiers dont vous aurez besoin – nous allons discuter de ceux par ordre de simplicité.

 

Une image de couverture

Aucun eBook professionnel n’est complet sans image de couverture. Le paramètre –cover dicte le chemin à utiliser pour spécifier exactement cela. Ce fichier sera intégré dans l’eBook, de sorte qu’un format web sûr tel que PNG ou JPEG est recommandé.

 

Tableau des matières

C’est un domaine où je peux voir cet outil évoluer, mais pour l’instant, la table des contenus, comme spécifié par l’argument –toc, est un fichier XHTML tout droit sorti de la spécification ePub – yuck!

Heureusement, la table des matières n’est pas quelque chose qui est trop compliqué dans la plupart des livres, ni devrait-il varier beaucoup. Voici un échantillon de ce à quoi on ressemblerait :

Cela représente une table de contenu assez moyenne. Chaque href fait référence au nom de fichier du chapitre tel qu’il sera à l’intérieur de votre ePub. Ceci est arbitraire en soi, mais doit être compatible avec le nom dans le fichier de configuration suivant.

 

Contents.json

Cela représente le cœur de ce dont html2epub a besoin pour générer avec succès un ePub. Jetons un coup d’oeil à un fichier d’échantillon avant de discuter plus loin :

Le contenu ici doit être dans le même ordre que la table des contenus, et le fichier ici doit également correspondre à la href il. La propriété url spécifie la page à inclure, tandis que l’attribut de connexion contient des informations de connexion facultatives si cela est nécessaire pour atteindre certains contenus. Voici à quoi pourrait ressembler un chapitre avec des informations de connexion :

Dans ce scénario, l’URL indique maintenant une page de connexion avec une redirection vers la page de destination, car html2epub devra se connecter avant de procéder.

 

En conclusion

Là, vous l’avez, un outil simple mais efficace pour générer des ePubs à partir de sites Web. Il ya plusieurs aspects de cet outil qui sont moins qu’idéal, tels que la manipulation de connexion et la table de contenu, mais dans l’ensemble, il m’a déjà fait économiser du temps – et j’ai dû construire la chose sacrément 🙂

L’outil lui-même est gratuit et open source – vérifiez-le sur github. Je vais sans aucun doute continuer à l’améliorer que mon utilisation se poursuit, mais pour le court terme mon objectif était de faire des ePubs pour mon livre, pas écrire des outils de génération ePub, donc je ne peux pas promettre une feuille de route fonctionnalité spécifique.

Comme toujours, les pensées, les commentaires et les critiques sont toujours les bienvenus.

 

 

About Jason

Jason est un entrepreneur expérimenté et développeur de logiciels qualifié dans le leadership, le développement mobile, la synchronisation des données et l’architecture SaaS. Il a obtenu son baccalauréat ès sciences (B.S.) en informatique de l’Université d’État de l’Arkansas.
View all posts by Jason →

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *