【问题标题】:How to implement an ePub reader for an iPad/iPhone app [closed]如何为 iPad/iPhone 应用程序实现 ePub 阅读器 [关闭]
【发布时间】:2012-09-03 05:37:48
【问题描述】:

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

【问题讨论】:

  • 嗨 - 这个问题已经在这里提出并回答了:stackoverflow.com/questions/3359758/…
  • 是的。根据答案,我认为我们可以在 uiwebview 中显示 XHTML 文件的内容。但我也想以没有任何滚动条的方式拆分页面。

标签: iphone ios xcode ipad epub


【解决方案1】:

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

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

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

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

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

应用程序/xhtml+xml

【讨论】:

  • 感谢您的回复,我了解整个过程但我有一个查询正如您所说“这将显示刚刚找到的内容,但“硬”部分正在文档之间移动(通常代表整章)。这是 iBooks 和其他应用程序为您完成的工作。” iBook 和其他可以提供阅读器的应用程序是否可以在我们的自定义应用程序中实现/使用??
  • @KanakVaghela 不,至少不公开。
  • @KanakVaghela Nir ​​Levy 是正确的,没有什么公开的。
  • @KanakVaghela 我们怎样才能 imapelement 类似于 iBook 的横向模式你能帮我吗
  • 因为精美地解释了这个过程而被投票赞成。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    试试这个步骤:

    源码:AePubReader


    实施:

    第 1 步:使用UIWebView 创建一个视图

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

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

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

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

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

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

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

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

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

    这些步骤是从这个link引用的

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多