阅读ePub格式
我正在尝试开发一个iPhone应用程序来读取ePub文件。 有没有什么框架可以开发这个? 我不知道如何阅读这个文件格式。 我尝试使用NSXML Parserparsing扩展名为.epub的示例文件,但是失败。
EPUB格式汇集了许多不同的规格/格式:
- 一个说什么书的内容应该看起来像(XHTML 1.1 + CSS的一个子集)
- 一个定义一个“清单”,列出组成该内容的所有文件(OPF,这是一个XML文件)
- 一个来定义如何打包所有东西(OEBPS:清单中所有东西的zip文件以及一些额外的文件)
规范看起来有点令人生畏,但实际上,一旦您掌握了基本知识(解压缩XML),并不是特别困难或复杂。
您需要制定如何下载EPUB,将其解压到某处,parsing清单,然后显示相关内容。
如果你刚刚开始,有些指针:
- parsingXML
- 拉开拉链
要显示内容,只需使用UIWebView
。
以下是您的代码的一个高级别的步骤:
1)用UIWebView
创build一个视图
2)下载EPUB文件
3)使用上面链接的zip库将其解压缩到应用程序文档文件夹中的子目录
4)使用TBXMLparsingMETA-INF/container.xml
的XML文件(如果该文件不存在,则EPUB无效)
5)在这个XML中,find媒体types为application/oebps-package+xml
的第一个“rootfile”。 这是本书的OPF文件。
6)parsingOPF文件(也是XML)
7)现在你需要知道本书的第一章是什么。
a) <manifest>
元素中的每个<item>
都有一个id和一个href。 将它们存储在NSDictionary
,其中键是id,对象是href。
b)看看<itemref>
中的第一个<itemref>
<spine>
。 它有一个idref属性,它对应于(a)中的一个id。 在NSDictionary
查找这个id,你会得到一个href。
c)这是第一章显示用户的文件。 找出完整的path(提示:无论你将zip文件解压缩到(3)加上(6)中的OPF文件的基本目录)
8)使用fileURLWithPath:
创buildNSURL
,其中path是(7c)的完整path。 使用您在(1)中创build的UIWebView
加载此请求。
您需要实现向前/向后button或滑动或其他内容,以便用户可以从一章移动到另一章。 使用<spine>
来计算出下一个要显示的文件 – XML中的<itemrefs>
按照它们应该出现在阅读器中的顺序。
显然EPUB是“只是”一种XML格式,所以如果你有一个XMLparsing器和规范应该没问题。
再加上一点tuto ? 玩的开心!
编辑:你也可以在这里读一些代码,这是为了生成EPUB,不读它们,但代码可能是有用的。
再次编辑:并看到在右侧边栏相关问题的链接,有免费电子书阅读器的支持ePub的答案中的一些链接。
编辑3:当你编辑你的问题,你应该添加评论,以便回答你的人可以继续讨论(如果你不评论我们没有注意到你的编辑)。
所以,parsing失败,因为你没有阅读关于堆栈溢出的规范或相关的问题… * .epub文件是一个包含XML文件的压缩文件夹,而不是简单的XML。
我读了一遍这个教程(免费注册需要,对不起),它给了我一个很好的介绍ePub。 deverloperWorks教程在这里
我强烈build议你看看一些XML处理库。 如果您只是想从XML文件中获取特定的信息,那么您可以select正确的parsing策略。
我正在玩arround为iphone应用程序创build一个epub框架。
目前(我真的刚刚开始),我可以生成一个标题页面链接到章节。
我的方法是
- 使用quickconnect iPhone框架作为一个层(也许我更改为phonegap),它基本上允许JavaScript应用程序作为iPhone应用程序
- 将UNZIPed epub添加为项目的资源
- 用epub.js的一个自定义版本parsing整个事情(在谷歌代码的某处)
现在我正在寻找页面翻转,某种gui和较小的可用性问题(保存当前正在查看的页面)
我希望给你一个关于如何开始的想法
Jonathan Wight(schwa)开发了一个ObjC解决scheme来parsing和显示iPhone上的ePub文档。 这是他的TouchCode开源存储库的一部分。