Формат 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) теперь вам нужно знать, что такое первая глава книги.
а) каждый элемент <item>
в <manifest>
элементе имеет идентификатор и href. Сохраните их в папке, NSDictionary
где ключ - это идентификатор, а объект - это href.
б) Посмотрите на первое <itemref>
в <spine>
. У него есть атрибут idref, который соответствует одному из идентификаторов в (a). Посмотрите этот идентификатор в, NSDictionary
и вы получите href.
c) это файл первой главы, который должен показать пользователю. Определите полный путь (подсказка: куда бы вы ни распаковали zip-файл в (3) плюс базовый каталог OPF-файла в (6))
8) создать NSURL
using fileURLWithPath:
, где путь - это полный путь из (7c). Загрузите этот запрос, используя UIWebView
созданный вами в (1).
Вам нужно будет реализовать кнопки вперед / назад, смахивания или что-то еще, чтобы пользователи могли переходить от одной главы к другой. Используйте, <spine>
чтобы определить, какой файл показывать следующим - <itemrefs>
в XML они находятся в том порядке, в котором они должны отображаться для читателя.
Очевидно, EPUB - это «всего лишь» формат XML, поэтому, если у вас есть синтаксический анализатор xml и его спецификация, все в порядке.
Плюс немного туто ? Радоваться, веселиться!
РЕДАКТИРОВАТЬ: вы также можете прочитать здесь код , он предназначен для создания epub, а не для их чтения, но код может быть полезен.
ИЗМЕНИТЬ еще раз: и посмотрите ссылки на связанный вопрос на правой боковой панели, в ответах есть несколько ссылок на бесплатную программу для чтения электронных книг, поддерживающую ePub.
РЕДАКТИРОВАТЬ 3: вы должны добавить комментарий при редактировании своего вопроса, чтобы люди, ответившие на вас, могли продолжить обсуждение (если вы не комментируете, мы не заметили вашего изменения).
Итак, синтаксический анализ завершился неудачно, потому что вы не прочитали спецификацию или связанные вопросы по переполнению стека ... * .epub файл - это заархивированная папка, содержащая файл (ы) XML, а не простой xml.
источник
Я однажды прочитал это руководство (требуется бесплатная регистрация, извините), и он дал мне отличное введение в ePub. deverloperWorks учебник здесь
Я настоятельно рекомендую вам взглянуть на некоторые библиотеки обработки XML. Если вы просто хотите получить конкретную информацию из файла XML, вы можете выбрать правильную стратегию синтаксического анализа.
источник
есть открытый проект fbreader,
он также поддерживает iphone
http://www.fbreader.org/about.php
источник
Я играю вокруг, чтобы создать epub-framework для приложений iphone.
На данный момент (я действительно только начал) я могу создать титульную страницу со ссылками на главы.
Мой подход
Прямо сейчас я изучаю pageflip, некоторые проблемы с графическим интерфейсом и незначительные проблемы с удобством использования (сохраните текущую просматриваемую страницу)
Я надеюсь, что это даст вам представление о том, как начать
источник
Джонатан Уайт (Schwa) разработал решение ObjC для анализа и отображения документов ePub на iPhone. Это часть его открытого репозитория TouchCode.
источник