web-dev-qa-db-ja.com

ePub形式の読み取り

EPubファイルを読み取るためのiPhoneアプリケーションを開発しようとしています。これを開発するために利用できるフレームワークはありますか?このファイル形式の読み方がわかりません。 NSXMLパーサーを使用して、拡張子が.epubのサンプルファイルを解析しようとしましたが、失敗します。

101
MobX

EPUB形式には、さまざまな仕様/形式がまとめられています。

  • 本の内容がどのように見えるかを言う人(XHTML 1.1 + CSSのサブセット)
  • そのコンテンツを構成するすべてのファイル(OPF、XMLファイル)をリストする「マニフェスト」を定義するもの
  • すべてのパッケージ方法を定義するもの(OEBPS:マニフェスト内のすべてのZipファイルといくつかの追加ファイル)

仕様は少々厄介に見えますが、実際には基本(XMLの解凍、構文解析)を理解すれば、それほど難しくも複雑でもありません。

EPUBをダウンロードし、どこかで解凍し、マニフェストを解析して、関連するコンテンツを表示する方法を考え出す必要があります。

始めたばかりの場合のいくつかの指針:

コンテンツを表示するには、今のところUIWebViewを使用してください。

コードのステップごとの概要を次に示します。

1)UIWebViewでビューを作成します

2)EPUBファイルをダウンロードする

3)上記のリンクのZipライブラリを使用して、アプリのドキュメントフォルダー内のサブディレクトリに解凍します。

4)上でリンクされたTBXMLを使用して、META-INF/container.xml(このファイルが存在しない場合、EPUBは無効です)でXMLファイルを解析します

5)このXMLで、メディアタイプapplication/oebps-package+xmlを持つ最初の「ルートファイル」を見つけます。これは本のOPFファイルです。

6)OPFファイル(XMLも)を解析します

7)今、あなたは本の最初の章が何であるかを知る必要があります。

a)<item>要素の各<manifest>にはidとhrefがあります。これらはNSDictionaryに保存します。キーはid、オブジェクトはhrefです。

b)<itemref>の最初の<spine>を見てください。 (a)のIDの1つに対応するidref属性があります。 NSDictionaryでそのIDを検索すると、hrefが取得されます。

c)これは、ユーザーに表示する最初の章のファイルです。完全なパスが何であるかを理解します(ヒント:(3)でZipファイルを解凍した場所と(6)でOPFファイルのベースディレクトリを解凍した場所)

8)fileURLWithPath:を使用してNSURLを作成します。ここで、パスは(7c)からのフルパスです。 (1)で作成したUIWebViewを使用してこのリクエストをロードします。

ユーザーが1つの章から別の章に移動できるように、進む/戻るボタンまたはスワイプなどを実装する必要があります。 <spine>を使用して、次に表示するファイルを決定します。XMLの<itemrefs>は、読者に表示される順序になっています。

301
Euan

どうやらEPUBは「単なる」XML形式であるため、xmlパーサーと 仕様 があれば大丈夫です。

プラス ちょっとした教え ?楽しむ!

編集:また、いくつかのコードを読むことができます ここ 、これはepubを生成するためのものであり、それらを読むのではなく、コードが役に立つかもしれません。

もう一度編集します。また、右側のサイドバーにある関連する質問へのリンクを参照してください。ePubをサポートする無料の電子ブックリーダーへの回答にいくつかのリンクがあります。


編集3:質問を編集するときにコメントを追加して、回答したユーザーが議論を続けられるようにします(コメントしないと、編集内容がわかりません)。

そのため、Stack Overflowの仕様や関連する質問を読んでいなかったため、解析は失敗します... * .epubファイルは、プレーンXMLではなくXMLファイルを含むzipフォルダーです。

21
p4bl0

このチュートリアルを1回読んで(無料の登録が必要です。申し訳ありません)、ePubの優れた紹介になりました。 deverloperWorksのチュートリアルはこちら

XML処理ライブラリのいくつかを見ることを強くお勧めします。 XMLファイルから特定の情報を取得するだけの場合は、適切な解析戦略を選択できます。

6
yonkeltron

オープンソースのプロジェクトfbreaderがあります。

また、iPhoneをサポートしています

http://www.fbreader.org/about.php

3
camino

私は、iphoneアプリ用のepubフレームワークを作成するために準備中です。

今のところ(私は本当に初心者です)、章へのリンクを含むタイトルページを生成できます。

私のアプローチは

  • 基本的にiphoneアプリとしてjavascriptアプリを許可するレイヤーとしてquickconnect iphoneフレームワークを使用します(おそらくphonegapに変更します)
  • UNZIPed epubをプロジェクトのリソースとして追加します
  • Epub.jsのカスタマイズされたバージョン(google-codeのどこか)で全体を解析します

現在、ページフリップ、ある種のGUIと軽微なユーザビリティの問題を調査しています(閲覧中の現在のページを保存します)

開始方法についてのアイデアをお聞かせください。

2
user254770

Jonathan Wight(schwa)は、iPhoneでePubドキュメントを解析および表示するためのObjCソリューションを開発しました。これは彼のTouchCodeオープンソースリポジトリの一部です。

1
Dwight Kelly