【问题标题】:Reading ePub format阅读 ePub 格式
【发布时间】:2010-11-26 04:26:30
【问题描述】:

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

【问题讨论】:

    标签: ios iphone epub


    【解决方案1】:

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

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

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

    您需要弄清楚如何下载 EPUB,将其解压缩到某个位置,解析清单,然后显示相关内容。

    如果您刚刚开始,请提供一些建议:

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

    以下是您的代码的高级分步说明:

    1) 创建一个带有UIWebView的视图

    2) 下载 EPUB 文件

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

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

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

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

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

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

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

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

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

    您需要实现前进/后退按钮或滑动或其他功能,以便用户可以从一章移动到另一章。使用<spine> 确定下一个要显示的文件 - XML 中的<itemrefs> 按照它们应该出现在读者面前的顺序排列。

    【讨论】:

    • 真的是一个很好的教程..!帅气的男人..!我花了很多时间做这样的演示
    • 很遗憾,只能为这个答案提供 1 票
    • 很好的答案。这正在成为一个常见问题解答:)
    • 非常感谢 Euan ...对于所有仍在寻找解决方案的人,我已经创建了一个示例并发布在 ideveloperworld.blogspot.com/2011/02/epub-reader.html
    • 请注意,如果您的意思是创建单独的新文件(即 ZIP 存档的解压缩内容),则没有特别需要“将其解压缩到某处”。 ZIP 是一种非常简单的格式,如果您还没有这样的库,那么创建库应该相当容易,这些库可以为存档中的各种文件提供输入流,这些文件可以直接从存档中读取。 RubyZip (rubyzip.sourceforge.net) 就是此类库的一个示例,它提供了完整的源代码。
    【解决方案2】:

    显然 EPUB 是“只是”一种 XML 格式,所以如果你有一个 xml 解析器和the spec 应该没问题。

    加上a little tuto?玩得开心!

    编辑:您还可以阅读一些代码here,这是用于生成 epub,而不是阅读它们,但代码可能有用。

    再次编辑:在右侧边栏中查看相关问题的链接,在支持 ePub 的免费电子书阅读器的答案中有一些链接。


    编辑 3:您应该在编辑问题时添加评论,以便回答您的​​人可以继续讨论(如果您不发表评论,我们不会注意到您的编辑)。

    因此,解析失败是因为您没有阅读 Stack Overflow 上的规范或相关问题... *.epub 文件是一个包含 XML 文件的压缩文件夹,而不是纯 xml。

    【讨论】:

      【解决方案3】:

      我通读了一遍本教程(需要免费注册,抱歉),它让我对 ePub 有了很好的介绍。 deverloperWorks tutorial here

      我强烈建议您查看一些 XML 处理库。如果您只想从 XML 文件中获取特定信息,那么您可以选择正确的解析策略。

      【讨论】:

      • 本教程非常棒,由许多可用的标准开源 ePub 工具的作者编写。这是一本快速阅读的书,并为 ePub 格式提供了完美的工作介绍。
      【解决方案4】:

      有一个开源项目fbreader,

      它也支持iphone

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

      【讨论】:

      • 或者还有futurepress/epub.js(它通过网络浏览器读取epub和注释)
      【解决方案5】:

      我正在为 iPhone 应用程序创建一个 epub 框架。

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

      我的方法是

      • 使用 quickconnect iphone 框架作为 一层(也许我换成phonegap) 这基本上允许javascript 应用程序作为 iPhone 应用程序
      • 将解压后的 epub 作为资源添加到项目中
      • 使用自定义版本的 epub.js(在 google-code 上的某个位置)解析整个内容

      现在我正在研究 pageflip、某种 gui 和小的可用性问题(保存当前正在查看的页面)

      我希望这能让您了解如何开始

      【讨论】:

      • 我使用了 epub.js 我得到了一个错误 XML Parsing Error: no element found location line number1 column number 1.你能帮我提供一些链接吗
      • 你的框架怎么样了?你在什么地方发表过吗?
      【解决方案6】:

      Jonathan Wight (schwa) 开发了一种 ObjC 解决方案,用于在 iPhone 上解析和显示 ePub 文档。这是他的 TouchCode 开源存储库的一部分。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多