ios - 阅读 ePub 格式

标签 ios iphone epub

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

最佳答案

EPUB 格式汇集了一系列不同的规范/格式:

  • 说明这本书的内容应该是什么样的(XHTML 1.1 + CSS 的子集)
  • 定义一个“ list ”,列出构成该内容的所有文件(OPF,这是一个 XML 文件)
  • 定义所有内容的打包方式(OEBPS: list 中所有内容的 zip 文件以及一些额外文件)

规范看起来有点令人生畏,但实际上一旦掌握了基础知识(解压缩、解析 XML),它就不是特别困难或复杂。

您需要了解如何下载 EPUB、将其解压缩到某处、解析 list 然后显示相关内容。

如果你刚刚开始,一些建议:

要显示内容,只需使用 UIWebView现在。

下面是您的代码的高级逐步说明:

1) 创建一个带有 UIWebView 的 View

2) 下载EPUB文件

3) 使用上面链接的 zip 库将其解压缩到应用文档文件夹中的子目录

4) 在 META-INF/container.xml 解析 XML 文件(如果此文件不存在,则 EPUB 无效)使用上面链接的 TBXML

5) 在此 XML 中,找到媒体类型为 application/oebps-package+xml 的第一个“rootfile” .这是本书的 OPF 文件。

6)解析OPF文件(也是XML)

7) 现在你需要知道这本书的第一章是什么。

a) 每个 <item><manifest>元素有一个 id 和一个 href。将这些存储在 NSDictionary 中其中键是 id,对象是 href。

b) 看第一个<itemref><spine> .它有一个 idref 属性,对应于 (a) 中的一个 id。在 NSDictionary 中查找该 ID你会得到一个 href。

c) 这是第一章给用户看的文件。找出完整路径是什么(提示:它是您在 (3) 中将 zip 文件解压缩到的位置加上 (6) 中 OPF 文件的基本目录)

8) 创建一个 NSURL使用 fileURLWithPath: ,其中路径是 (7c) 的完整路径。使用 UIWebView 加载此请求您在 (1) 中创建的。

您需要实现前进/后退按钮或滑动等,以便用户可以从一章移动到另一章。使用 <spine>找出下一个要显示的文件 - <itemrefs> XML 中的顺序是它们应向读者显示的顺序。

关于ios - 阅读 ePub 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388467/

相关文章:

iphone - UIScrollView 内部分透明内容的奇怪行为

iphone - 使用 ARC 时为 "Copy"

php - 在 php 中导出为 epub 格式

epub - 如何保护 epub 文件不被复制和打印?

ios - 如何在自定义类按钮上添加渐变?

iOS : How to add Underline in UITabBarItem

iphone - 如何使 JavaScript 网页看起来像 iPhone 上的应用程序

iphone - didUpdateLocations 被调用,但发送了错误的位置

android epublib 访问 css,images,urls 内部文件

ios - 独立大括号在 Objective-C 中有什么作用