阅读ePub格式

我正在尝试开发一个iPhone应用程序来读取ePub文件。 有没有什么框架可以开发这个? 我不知道如何阅读这个文件格式。 我尝试使用NSXML Parserparsing扩展名为.epub的示例文件,但是失败。

6 Solutions collect form web for “阅读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策略。

有一个开源项目的fbreader,

它也支持iphone

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

我正在玩arround为iphone应用程序创build一个epub框架。

目前(我真的刚刚开始),我可以生成一个标题页面链接到章节。

我的方法是

  • 使用quickconnect iPhone框架作为一个层(也许我更改为phonegap),它基本上允许JavaScript应用程序作为iPhone应用程序
  • 将UNZIPed epub添加为项目的资源
  • 用epub.js的一个自定义版本parsing整个事情(在谷歌代码的某处)

现在我正在寻找页面翻转,某种gui和较小的可用性问题(保存当前正在查看的页面)

我希望给你一个关于如何开始的想法

Jonathan Wight(schwa)开发了一个ObjC解决scheme来parsing和显示iPhone上的ePub文档。 这是他的TouchCode开源存储库的一部分。

  • iOS 7状态栏重叠UI
  • build立一个iOS应用程序没有拥有一个MAC?
  • iPhone:创build一个可重用的组件(控件),它具有一些Interface Builder部分和一些代码
  • HTTP“Content-Disposition:附件”并在iOS Web浏览器上下载文件
  • iPhone核心数据“生产”error handling
  • 使用UIView animateWithDurationanimation时,不能触摸UIButton
  • 酒吧半透明在iOS 7.0.3了
  • 有没有办法隐藏UIScrollView中的滚动指标?
  • 委托在xcode ios项目中究竟做了些什么?
  • 我可以在UIScrollView中使用UIRefreshControl吗?
  • 视网膜显示和