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

Описание к компьютеру, что Вы хотите, не, как сделать что-то.

101
задан TheNeil 22 May 2019 в 00:15
поделиться

5 ответов

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

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

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

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

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

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

Пошагово для вашего кода:

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

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

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

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

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

6) разберите файл OPF (также XML)

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

a) каждый <пункт> в элементе <манифест> имеет id и href. Храните их в NSD словаре, где ключом является id, а объектом - href.

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

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

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

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

301
ответ дан 24 November 2019 в 04:36
поделиться

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

Плюс немного тутто ? Удачи!

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

ИЗМЕНИТЬ снова: И см. Ссылки на связанный вопрос на правой боковой панели в ответах есть ссылки на бесплатную программу для чтения электронных книг, поддерживающую ePub.


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

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

21
ответ дан 24 November 2019 в 04:36
поделиться

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

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

6
ответ дан 24 November 2019 в 04:36
поделиться

Я играю в Arrand, чтобы создать EPUB-Framework для приложений для iPhone.

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

Мой подход

  • Использование QuickConnect iPhone Framework, как слой (может быть, я изменяюсь в телефонную связь) который в основном позволяет JavaScript Приложения в качестве приложений для iPhone
  • добавьте распакованный EPUB в качестве Ressource в проект
  • , разбирайте все это с помощью индивидуальной версии EPUB.JS (где-то в Google-Code)

прямо сейчас я ищу PageFlip, какой-то вид GUI и незначительных проблем юзабилити (сохранить текущую страницу, которые называется)

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

2
ответ дан 24 November 2019 в 04:36
поделиться

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

1
ответ дан 24 November 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: