Подтвердить что ты не робот

Чтение формата ePub

Я пытаюсь разработать приложение для iPhone для чтения файлов ePub. Есть ли какие-либо рамки для его разработки? Я не знаю, как читать этот формат файла. Я попытался проанализировать образец файла с расширением .epub с использованием NSXML Parser, но это не удается.

4b9b3361

Ответ 1

Формат EPUB объединяет множество различных спецификаций/форматов:

  • чтобы сказать, как должно выглядеть содержимое книги (подмножество XHTML 1.1 + CSS)
  • чтобы определить "манифест", в котором перечислены все файлы, составляющие этот контент (OPF, который является XML файлом).
  • определить, как все упаковано (OEBPS: zip файл всего в манифесте плюс несколько дополнительных файлов)

Спецификации выглядят немного сложными, но на самом деле после того, как у вас есть основы (распаковка, разбор XML), это не особенно сложно или сложно.

Вам нужно будет разобраться, как загрузить EPUB, разархивировать его где-нибудь, проанализировать манифест и затем отобразить соответствующий контент.

Некоторые указатели, если вы только начинаете:

Для отображения содержимого просто используйте UIWebView.

Здесь шаг за шагом высокого уровня для вашего кода:

1) создать представление с помощью UIWebView

2) загрузите файл EPUB

3) разархивируйте его в подкаталог в папке документов приложения, используя zip-библиотеку, связанную выше

4) проанализировать XML файл в META-INF/container.xml (если этот файл не существует, EPUB недействителен) с использованием TBXML, связанного выше

5) В этом XML найдите первый "корневой файл" с медиа-типом application/oebps-package+xml. Это файл OPF для книги.

6) проанализируйте файл OPF (также XML)

7) теперь вам нужно знать, что такое первая глава книги.

a) каждый <item> в элементе <manifest> имеет id и href. Сохраните их в NSDictionary, где ключ является идентификатором, а объектом является href.

b) Посмотрите на первый <itemref> в <spine>. Он имеет атрибут idref, который соответствует одному из идентификаторов в (a). Посмотрите этот идентификатор в NSDictionary, и вы получите href.

c) это файл первой главы, чтобы показать пользователя. Выясните, что такое полный путь (подсказка: везде, где вы разархивировали zip файл в (3) плюс базовый каталог файла OPF в (6))

8) создайте NSURL с помощью fileURLWithPath:, где путь - полный путь из (7c). Загрузите этот запрос с помощью UIWebView, созданного в (1).

Вам нужно будет использовать кнопки вперед или назад или звуковые дорожки или что-то еще, чтобы пользователи могли перемещаться из одной главы в другую. Используйте <spine>, чтобы определить, какой файл будет отображаться дальше - <itemrefs> в XML-формате находятся в том порядке, в котором они должны появляться читателю.

Ответ 2

Очевидно, EPUB является "просто" XML-форматом, поэтому, если у вас есть синтаксический анализатор xml и спецификация, все должно быть в порядке.

Плюс немного tuto? Получайте удовольствие!

EDIT: вы также можете прочитать код здесь, это для генерации epub, а не для чтения, но код может быть полезен.

РЕДАКТИРОВАТЬ еще раз: и посмотреть ссылки на связанный вопрос на правой боковой панели, есть некоторые ссылки в ответах на бесплатный ebook-ридер, поддерживающий ePub.


РЕДАКТИРОВАТЬ 3: вы должны добавить комментарий, когда вы редактируете свой вопрос, чтобы люди, которые отвечали вам, могли продолжить обсуждение (если вы не комментируете, мы не заметили ваше редактирование).

Итак, синтаксический анализ завершился неудачно, потому что вы не прочитали спецификацию или связанные вопросы в Stack Overflow... *.epub файл - это zipped-папка, содержащая XML файл (ы), а не простой xml.

Ответ 3

Я прочитал этот учебник один раз (требуется бесплатная регистрация, извините), и это дало мне отличное введение в ePub. учебник deverloperWorks здесь

Я настоятельно рекомендую вам взглянуть на некоторые из библиотек обработки XML. Если вы хотите получить определенную информацию из XML файла, вы можете выбрать правильную стратегию синтаксического анализа.

Ответ 4

есть fpreader проекта с открытым исходным кодом,

он также поддерживает iphone

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

Ответ 5

Я играю arround для создания epub-рамки для приложений iphone.

В настоящий момент (я действительно просто начинаю) я могу создать титульную страницу со ссылками на главы.

Мой подход

  • Использовать фреймворк iphone слой (возможно, я перейду на телефонную развязку) который в основном позволяет использовать javascript приложения в качестве приложений для iphone
  • Добавьте epub UNZIPed в качестве источника для проекта
  • Разберите все это с помощью настроенной версии epub.js(где-то на google-коде)

Прямо сейчас я просматриваю страницу flip, какие-то проблемы с gui и minor jability (сохраняя текущую страницу)

Надеюсь, это даст вам представление о том, как начать

Ответ 6

Джонатан Уайт (schwa) разработал решение ObjC для анализа и отображения документов ePub на iPhone. Это часть его хранилища с открытым исходным кодом TouchCode.