Libro
     

Generación de libros ePub desde HTML

Convertir un único archivo HTML en un ePub es sencillo, con muchas herramientas gratuitas disponibles para este propósito. Pero, si tu objetivo es convertir varios archivos HTML, y sólo una parte de cada archivo, en un eBook con una tabla de contenido adecuada, imagen de portada, etc., ¿qué haces?

 

Esta fue exactamente la encrucijada en la que me encontré cuando intentaba crear una versión ePub de mi libro. Cada capítulo del libro estaba representado por una página web única, y necesitaba una forma automatizada de descargar rápidamente todos los y combinarlos en un eBook. Para hacer las cosas más interesantes, sólo una parte de cada página era necesaria-¿quién quiere ver el encabezado de una página web, el pie y la barra de navegación en un ePub? Además, las imágenes necesitaban ser descargadas e incrustadas en el ePub, y los fragmentos de código de Github Gist necesitaban ser descargados y representados sin el uso de las etiquetas JavaScript de Github.

Todos estos requisitos son necesarios para crear un ePub profesional, pero sorprendentemente no existía ninguna herramienta que pudiera hacer todas estas cosas sin un esfuerzo manual considerable. Al igual que cualquier desarrollador de software bueno, si no existe ninguna herramienta para un trabajo, y la única otra opción es el trabajo manual, tomé el camino más perezoso y creó una nueva herramienta para hacer el trabajo.

Presentamos html2epub

Esa nueva herramienta se llama html2epub y es una aplicación de línea de comandos que puede:

  • Genere un ePub de aspecto profesional a partir de una serie de páginas web
  • Quitar HTML innecesario
  • Convierta HTML en XHTML para que cumpla con las especificaciones de ePub
  • Incrustar imágenes
  • Incrustar fragmentos de código de Gist
  • Reescribir capítulo a enlaces de capítulos para una navegación ePub adecuada
  • Compatibilidad con la navegación de la tabla de contenido
  • Autenticación basada en formularios de soporte

He intentado mantener esta utilidad tan fácil de usar como sea posible, a pesar de sus muchas características. Echemos un vistazo a cómo empezar.

 

Empezar

En macOS instalar html2epub es muy simplificado por Brew. Simplemente ejecute:

brew install jwhitehorn/brew/html2epub

Esto descargará e instalará htmlepub, y sus dependencias, y registrará el comando en su PATH. Con esto completado, puede generar un ePub tan fácilmente como:

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"

Es decir, suponiendo que ya tiene algunos archivos de configuración-que discutiremos en un momento. La justificación para esto es que prefiero tener una herramienta que era fácil de invocar una y otra vez, durante un período de tiempo, incluso si eso significaba crear un par de archivos de configuración desde el principio. Específicamente, como estoy escribiendo Data Synchronization: Patterns, Tools, & Techniques, necesitaba una manera fácil de volver a generar una distribución de ePub como nuevo contenido se publica.

Hay tres archivos que necesitarás-vamos a discutir los en orden de simplicidad.

 

Una imagen de portada

Ningún eBook profesional está completo sin una imagen de portada. El parámetro –cover dicta la ruta de acceso que se utilizará para especificar exactamente eso. Este archivo se incrusta en el eBook, por lo que se recomienda un formato seguro para la web como PNG o JPEG.

 

Tabla de contenidos

Este es un área donde puedo ver esta herramienta evolucionando, pero por ahora, la tabla de contenido, como se especifica en el argumento –toc, es un archivo XHTML directamente de la especificación ePub – Yuck!

Afortunadamente la tabla de contenido no es algo que es demasiado complicado en la mayoría de los libros, ni debe variar mucho. Aquí está una muestra de lo que uno se vería como:

Esto representa una tabla de contenido bastante promedio. Cada href hace referencia al nombre de archivo del capítulo, ya que estará dentro de su ePub. Esto es arbitrario en sí mismo, pero debe ser coherente con la denominación en el siguiente archivo de configuración.

Contents.json

Esto representa el núcleo de lo que html2epub necesita para generar correctamente un ePub. Echemos un vistazo a un archivo de muestra antes de discutir más:

El contenido aquí debe estar en el mismo orden que la tabla de contenido, y el archivo aquí también debe coincidir con el href allí. La propiedad URL especifica la página que se incluirá, mientras que el atributo de inicio de sesión contiene información de inicio de sesión opcional si es necesario para alcanzar cierto contenido. Aquí es lo que un capítulo con información de inicio de sesión podría ser similar:

En este escenario, la dirección URL ahora apunta a una página de inicio de sesión con una redirección a la página de destino, como html2epub tendrá que iniciar sesión antes de continuar.

 

En cierre

Allí lo tienes, una herramienta simple pero eficaz para la generación de ePubs de sitios Web. Hay varios aspectos de esta herramienta que son menos que ideales, como el manejo de inicio de sesión y la tabla de contenido, pero en general ya me ha ahorrado tiempo-y tuve que construir la cosa maldita:-)

la herramienta en sí es libre y de código abierto-comprobarlo en GitHub. Sin duda seguiré mejorando a medida que mi uso continúa, pero para el corto plazo mi objetivo era hacer ePubs para mi libro, no escribir herramientas de generación de ePub, por lo que no puedo prometer ninguna hoja de ruta de características específicas.

Como siempre, los pensamientos, las opiniones y las críticas son siempre bienvenidas.

 

 

About Jason

Jason es un experimentado emprendedor y desarrollador de software con una historia demostrada de trabajar en la industria del petróleo y la energía. Experto en liderazgo, desarrollo móvil, sincronización de datos y arquitectura SaaS. Fuerte profesional de la ingeniería con una licenciatura en Ciencias (B.S.) en Ciencias de la computación de la Universidad Estatal de Arkansas.
View all posts by Jason →

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *