8

我想为 iOS 平台实现一个 ePub 阅读器。请建议任何用于翻书动画、书签、字体大小自定义和单页视图(无滚动条)的开源代码。

4

4 回答 4

4

正如上一篇文章所指出的,没有任何 API 可以让 ePub 显示它——你需要做一些工作:

  1. 解压 ePub
  2. 读取清单文件和元数据文件以找到要显示的 xhtml 文档
  3. 使用解压缩文档的 file:/// URL 将 xhtml 文档加载到 UIWebView

如果您想确保文档不会访问网络,您需要实现自定义 NSURLProtocol 并自己为文件提供字节,因为 file:/// 允许跨域访问。

这将很好地显示内容,但“困难”部分正在文档之间移动(通常代表一整章)。这是 iBooks 和其他应用程序为您完成的工作。

注意:要让 UIWebView 正确显示内容,您必须确保在使用 file:/// url 时文件具有 .xhtml 扩展名。如果您实现自己的 URL 协议处理程序,则需要确保协议处理程序为 xhtml 返回正确的 xml 内容类型,即:

应用程序/xhtml+xml

于 2012-09-03T07:05:54.537 回答
4

使用 ePub 打包格式和开源阅读器作为参考:

于 2013-03-12T00:02:20.207 回答
1

将 UITextView 与 pageview 控制器一起使用。(如果有任何疑问,请说明您的疑问)

于 2014-05-22T07:12:27.423 回答
1

试试这个步骤:

源代码: AePubReader


执行:

步骤 1:创建一个视图UIWebView

第 2 步:下载EPUB文件并导入到您的项目中

第 3 步:将EPUB文件解压缩到应用程序文档文件夹中的子目录。

第 4 步:解析XML目录中的文件META-INF/container.xml。如果此文件目录不存在意味着您的 EPUB 文件无效。

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

第 6 步:解析 OPF 文件(也是 XML)

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

  • 元素中的每个元素都有一个 id 和一个 href。将这些存储在NSDictionary其中键是 id 而对象是 href 的地方。
  • 看第一个中的。它有一个 idref 属性,对应于(步骤 7a)中的一个 id。在 中查找该 ID,NSDictionary您将获得一个 href。
  • 这是向用户展示的第一章的文件。找出完整路径是什么(提示:它是您将 zip 文件解压缩到的位置(步骤 3),加上NSDictionaryOPF 文件的基础(步骤 6)。

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

第 9 步:您需要实现forward / backward按钮或swipes其他东西,以便用户可以从一章移动到另一章。使用 确定接下来要显示的文件。然后XML按照它们应该出现在读者面前的顺序排列。

这些步骤是从此链接引用的

于 2014-05-13T09:33:17.060 回答