¿Cómo puedo implementar un lector EPUB en JavaScript?

6

Me pregunto si puedo crear un lector EPUB (estándar de libros electrónicos gratuito y abierto) en JavaScript. Los requisitos básicos serían:

  1. Partes del servidor del lector EPUB desde una API de servidor.
  2. Lea los datos de EPUB en JavaScript.
  3. Renderizarlo en la página.
  4. Proporcione alguna funcionalidad adicional, como resaltados de texto o notas de página.

No tengo información sobre cómo podría hacer esto. Estoy dispuesto a probar un proyecto prototipo. ¿Cuáles son los pasos que podría tomar para implementar tal cosa?

Vlad Nicula
fuente
@FlorianMargaine gracias por los enlaces, vi esos dos ejemplos hace un tiempo. Siento que el código de esos proyectos está en modo prototipo en este momento, por lo que tratar de realizar ingeniería inversa sería muy difícil. Estoy buscando algunos consejos sobre cómo analizar el contenido de EPUB y mostrarlo en la página. Detalles específicos o enlaces a donde podría encontrar una documentación fácil de seguir sobre cómo se ve el contenido de epub y cómo lo mostraría en la página.
Vlad Nicula

Respuestas:

9

Según sus comentarios, parece que está en una etapa conceptual muy temprana y desea orientación general ... bueno, eso será muy difícil de dar, ya que todo el tema es bastante amplio. Pero en general, lo que quieres hacer es:

  1. Lea y analice un archivo epub usando javascript.
  2. Genere HTML que represente los contenidos (e imágenes en línea / SVG / etc.).

Bueno, eso está en un nivel muy alto, y no nos ayuda mucho. Puede desglosar el paso 1 leyendo el propio formato epub (por ejemplo: artículo de Wikipedia e información general) Bastante rápido, debería notar que el formato usa OCF para empaquetar varios archivos, por lo que su primer problema será crear un lector OCF, lo que también significa que deberá descomprimir los datos en javascript (los enlaces de Florian Margaine deberían darle una idea de cómo otros han resuelto este problema). En este punto, comenzaría a buscar implementaciones existentes en javascript, porque probablemente no quiera implementar todo esto desde cero. Esto es todo incluso antes de que toquemos el contenido real del archivo epub. Una vez que haya pasado este punto, debería poder leer los contenidos reales e intentar traducirlos a HTML.

Con respecto al paso 2, comenzaría mirando las diversas características proporcionadas por epub (texto, estilo CSS, imágenes incrustadas, etc.) y comenzaría a atacarlas una a la vez, comenzando con lo que sea más útil para mi tiempo (probablemente texto ...)

Daniel B
fuente
Gracias. Este es el tipo de punto de partida que estaba buscando.
Vlad Nicula
2
Iba a responder pero esto lo cubre principalmente. Lo único que agregaría es el enlace a la especificación real del archivo. idpf.org/epub
Rig
0

TreineticEpubReaderes una bifurcación popular readium-js-viewerque proporciona una API muy simple para interactuar con archivos epub ingrese la descripción de la imagen aquí, puede cargar el epub como .epub o servir la ruta de carpeta extraída del epub

https://github.com/Treinetic/TreineticEpubReader

La biblioteca es javascript puro, por lo que puede mezclar y mezclar con cualquier marco moderno, aquí hay un código de muestra, también puede mirar la samplecarpeta dentro distpara encontrar una demostración que funcione

<div id="epub-reader-frame"></div>

var exControls = TreineticEpubReader.handler();
exControls.registerEvent("onEpubLoadSuccess", function () {

});

exControls.registerEvent("onEpubLoadFail", function () {

});

exControls.registerEvent("onTOCLoaded", function (hasTOC) {
    if (!hasTOC) {
       let toc =  exControls.getTOCJson();
    }
    // you can use following api calls after this
    /**
    exControls.hasNextPage()
    exControls.nextPage();
    exControls.hasPrevPage()
    exControls.prevPage();
    exControls.makeBookMark();
    exControls.changeFontSize(int);
    exControls.changeColumnMaxWidth(int);
    exControls.setTheme("theme-id-goes-here");
    exControls.setScrollMode("scroll-type-id-goes-here");
    exControls.setDisplayFormat("display-format-id-goes-here");

    extcontrols.getRecommendedFontSizeRange()
    extcontrols.getRecommendedColumnWidthRange()
    var list = extcontrols.getAvailableThemes();
    var list = extcontrols.getAvailableScrollModes();
    var list = extcontrols.getAvailableDisplayFormats();
    var settings = extcontrols.getCurrentReaderSettings();
    **/
});

var config = TreineticEpubReader.config();
config.jsLibRoot = "src/ZIPJS/";

TreineticEpubReader.create("#epub-reader-frame");
TreineticEpubReader.open("assets/epub/epub_1.epub");


imal hasaranga perera
fuente