EPubファイルを読み取るためのiPhoneアプリケーションを開発しようとしています。これを開発するために利用できるフレームワークはありますか?このファイル形式の読み方がわかりません。 NSXMLパーサーを使用して、拡張子が.epubのサンプルファイルを解析しようとしましたが、失敗します。
EPUB形式には、さまざまな仕様/形式がまとめられています。
仕様は少々厄介に見えますが、実際には基本(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>
は、読者に表示される順序になっています。
どうやらEPUBは「単なる」XML形式であるため、xmlパーサーと 仕様 があれば大丈夫です。
プラス ちょっとした教え ?楽しむ!
編集:また、いくつかのコードを読むことができます ここ 、これはepubを生成するためのものであり、それらを読むのではなく、コードが役に立つかもしれません。
もう一度編集します。また、右側のサイドバーにある関連する質問へのリンクを参照してください。ePubをサポートする無料の電子ブックリーダーへの回答にいくつかのリンクがあります。
編集3:質問を編集するときにコメントを追加して、回答したユーザーが議論を続けられるようにします(コメントしないと、編集内容がわかりません)。
そのため、Stack Overflowの仕様や関連する質問を読んでいなかったため、解析は失敗します... * .epubファイルは、プレーンXMLではなくXMLファイルを含むzipフォルダーです。
このチュートリアルを1回読んで(無料の登録が必要です。申し訳ありません)、ePubの優れた紹介になりました。 deverloperWorksのチュートリアルはこちら
XML処理ライブラリのいくつかを見ることを強くお勧めします。 XMLファイルから特定の情報を取得するだけの場合は、適切な解析戦略を選択できます。
私は、iphoneアプリ用のepubフレームワークを作成するために準備中です。
今のところ(私は本当に初心者です)、章へのリンクを含むタイトルページを生成できます。
私のアプローチは
現在、ページフリップ、ある種のGUIと軽微なユーザビリティの問題を調査しています(閲覧中の現在のページを保存します)
開始方法についてのアイデアをお聞かせください。
Jonathan Wight(schwa)は、iPhoneでePubドキュメントを解析および表示するためのObjCソリューションを開発しました。これは彼のTouchCodeオープンソースリポジトリの一部です。