JavaScriptでEPUBリーダーを実装するにはどうすればよいですか?


6

JavaScriptでEPUB(無料でオープンな電子書籍標準)リーダーを作成できるかどうか疑問に思っています。基本的な要件は次のとおりです。

  1. サーバーAPIからのEPUBリーダーのサーバー部分。
  2. JavaScriptでEPUBデータを読み取ります。
  3. ページにレンダリングします。
  4. テキストの強調表示やページのメモなど、いくつかの追加機能を提供します。

どうすればいいのかわかりません。私はプロトタイプのプロジェクトを試してみたいと思っています。そのようなものを実装するために私が取ることができるステップは何ですか?



@FlorianMargaineリンクに感謝します。これら2つの例は少し前に見ました。今のところ、これらのプロジェクトのコードはプロトタイプモードであるため、リバースエンジニアリングを行うのは非常に困難です。EPUBコンテンツを解析してページにレンダリングする方法についてのヒントを探しています。epubのコンテンツがどのように表示され、どのようにページに表示するかについて、わかりやすいドキュメントを見つけることができる特定の詳細またはリンク。
Vlad Nicula 2012年

回答:


9

あなたのコメントから、あなたは非常に初期の概念的段階にあり、一般的なガイダンスを求めているようです...まあ、トピック全体が非常に大きいので、それを与えることは非常に難しいでしょう。しかし、一般的に、あなたがしたいことは:

  1. JavaScriptを使用してepubファイルを読み込んで解析します。
  2. コンテンツ(およびインライン画像/ SVG /など)を表すHTMLを生成します。

まあ、それは非常に高いレベルにあり、私たちをあまり助けません。ステップ1は、epub形式自体(例:ウィキペディアの記事一般情報)を読むことで分類できます。)。すぐに、この形式ではOCFを使用して複数のファイルをパッケージ化していることに気付くはずです。そのため、最初の問題はOCFリーダーを作成することです。これは、JavaScriptでデータを解凍できる必要があることも意味します(Florian Margaineのリンクは他の人がこの問題をどのように解決したかについてのアイデアを教えてください)。この時点で、JavaScriptでの既存の実装の検索を開始します。おそらく、これらすべてを最初から実装する必要はないでしょう。これは、epubファイルの実際のコンテンツに触れる前のすべてです。この時点を過ぎると、実際のコンテンツを読み取ってHTMLに変換できるようになります。

ステップ2については、まずepubが提供するさまざまな機能(テキスト、CSSスタイル、埋め込み画像など)を確認し、一度に1つずつ攻撃を開始します。 ...)。


ありがとうございました。これは私が探していた出発点のようなものです。
Vlad Nicula、2012年

2
返信するつもりでしたが、これでほぼカバーできます。追加するのは、実際のファイル仕様へのリンクだけです。idpf.org/epub
Rig

0

TreineticEpubReaderreadium-js-viewerそれは人気のあるフォークであり、epubファイルと対話するための非常にシンプルなapiを提供しますここに画像の説明を入力してください。epubを.epubとしてロードするか、epubの抽出フォルダーパスを提供できます。

https://github.com/Treinetic/TreineticEpubReader

ライブラリは純粋なjavascriptなので、最新のフレームワークとブレンドして組み合わせることができます。ここにサンプルコードがあります。また、sample内部のフォルダーdistを見て、動作するデモを見つけることもできます。

<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");

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.