阅读 ePub 格式

发布于 2024-08-03 14:34:46 字数 108 浏览 8 评论 0 原文

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

I am trying to develop an iPhone application to read ePub files. Is there any framework available to develop this? I have no idea about how to read this file format. I tried to parse a sample file with .epub extension using NSXML Parser, but that fails.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

月亮是我掰弯的 2024-08-10 14:34:46

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 中,找到第一个“ rootfile”,媒体类型为 application/oebps-package+xml。这是本书的 OPF 文件。

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

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

a) 元素中的每个 都有一个 id 和一个 href。将它们存储在 NSDictionary 中,其中键是 id,对象是 href。

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

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

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

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

The EPUB format brings together a bunch of different specifications / formats:

  • one to say what the content of the book should look like (a subset of XHTML 1.1 + CSS)
  • one to define a "manifest" that lists all of the files that make up that content (OPF, which is an XML file)
  • one to define how everything is packaged up (OEBPS: a zip file of everything in the manifest plus a few extra files)

The specs look a bit daunting but actually once you've got the basics (unzipping, parsing XML) down it's not particularly difficult or complex.

You'll need to work out how to download the EPUB, to unzip it somewhere, to parse the manifest and then to display the relevant content.

Some pointers if you're just starting out:

To display content just use a UIWebView for now.

Here's a high level step by step for your code:

1) create a view with a UIWebView

2) download the EPUB file

3) unzip it to a subdirectory in your app's documents folder using the zip library, linked above

4) parse the XML file at META-INF/container.xml (if this file doesn't exist the EPUB is invalid) using TBXML, linked above

5) In this XML, find the first "rootfile" with media-type application/oebps-package+xml. This is the OPF file for the book.

6) parse the OPF file (also XML)

7) now you need to know what the first chapter of the book is.

a) each <item> in the <manifest> element has an id and an href. Store these in an NSDictionary where the key is the id and the object is the href.

b) Look at the first <itemref> in the <spine>. It has an idref attribute which corresponds to one of the ids in (a). Look up that id in the NSDictionary and you'll get an href.

c) this is the the file of the first chapter to show the user. Work out what the full path is (hint: it's wherever you unzipped the zip file to in (3) plus the base directory of the OPF file in (6))

8) create an NSURL using fileURLWithPath:, where the path is the full path from (7c). Load this request using the UIWebView you created in (1).

You'll need to implement forward / backward buttons or swipes or something so that users can move from one chapter to another. Use the <spine> to work out which file to show next - the <itemrefs> in the XML are in the order they should appear to the reader.

风和你 2024-08-10 14:34:46

显然 EPUB“只是”一种 XML 格式,因此如果您有一个 xml 解析器和规范它应该没问题。

再加上一点教程?玩得开心!

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

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


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

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

Apparently EPUB is "just" an XML format, so if you have an xml parser and the spec it should be okay.

Plus a little tuto? Have fun!

EDIT: you could also read some code here, this is for generating epub, not reading them but the code may be useful.

EDIT again: And see links to related question in the right sidebar, there are some links in the answers to free ebook reader which support ePub.


EDIT 3: You should add a comment when you edit your question so people who answer you can continue the discussion (if you don't comment we're not noticed of your edit).

So, The parsing fail because you didn't read the spec or related questions on Stack Overflow... *.epub file are a zipped folder containing XML file(s), not plain xml.

浪漫人生路 2024-08-10 14:34:46

我通读了一次本教程(需要免费注册,抱歉),它为我提供了有关 ePub 的精彩介绍。 deverloperWorks 教程

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

I read through this tutorial once (free registration required, sorry) and it gave me a great introduction to ePub. deverloperWorks tutorial here

I highly suggest you look at some of the XML processing libraries. If you just want to get specific information out of the XML file, then you can pick the right parsing strategy.

悲歌长辞 2024-08-10 14:34:46

有一个开源项目fbreader,

它也支持iphone

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

there is an open source project fbreader,

it also support iphone

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

欢你一世 2024-08-10 14:34:46

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

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

我的方法是

  • 使用quickconnect iphone框架作为
    一层(也许我改成phonegap)
    这基本上允许 JavaScript
    应用程序作为iPhone应用程序
  • 将解压缩的epub作为资源添加到项目中
  • 使用epub.js的自定义版本(谷歌代码上的某处)解析整个内容

现在我正在研究pageflip,某种GUI和次要可用性问题(保存当前正在查看的页面)

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

I'm playing arround to create an epub-framework for iphone apps.

At the moment (I really just startet) i can generate a title page with links to the chapters.

My approach is

  • Use quickconnect iphone framework as
    a layer (maybe i change to phonegap)
    which basically allows for javascript
    apps as iphone apps
  • Add the UNZIPed epub as a ressource to the project
  • Parse the whole thing with a customized version of the epub.js (somewhere on google-code)

Right now I'm looking into pageflip, some kind of gui and minor usability issues (save the current page beingviewed)

I hope that give's you an idea on how to start

不必在意 2024-08-10 14:34:46

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

Jonathan Wight (schwa) has developed a ObjC solution for parsing and displaying ePub documents on the iPhone. It's part of his TouchCode open source repository.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文