6 ответов:
формат EPUB объединяет множество различных спецификаций / форматов:
- можно сказать, как должно выглядеть содержание книги (подмножество XHTML 1.1 + CSS)
- один для определения "манифеста", в котором перечислены все файлы, составляющие это содержимое (OPF, который является XML-файлом)
- один, чтобы определить, как все упаковано (OEBPS: zip-файл всего в манифесте плюс несколько дополнительных файлы)
спецификации выглядят немного устрашающе, но на самом деле, когда у вас есть основы (распаковка, разбор XML), это не особенно сложно или сложно.
вам нужно будет решить, как загрузить EPUB, распаковать его где-нибудь, проанализировать манифест, а затем отобразить соответствующий контент.
некоторые указатели, если вы только начинаете:
для отображения контента просто использовать
UIWebViewсейчас.вот шаг за шагом высокого уровня для вашего кода:
1) создать представление с
UIWebView2) Загрузите файл EPUB
3) распакуйте его в подкаталог в папке документов вашего приложения с помощью zip-библиотеки, связанной выше
4) проанализируйте XML-файл в
META-INF/container.xml(если этот файл не существует Epub является недействительным), используя tbxml с, указанной выше5) в этом XML, найти первую "rootfile" с медиа-тип
application/oebps-package+xml. Это файл OPF для книги.6) разбор файла OPF (также XML)
7) Теперь вам нужно знать, что такое первая глава книги.
a) каждая
<item>на<manifest>элемент имеет идентификатор и href. Храните их вNSDictionaryгде ключ-это идентификатор, а объект является href.б) посмотрите на первый
<itemref>на<spine>. Он имеет атрибут idref, который соответствует одному из идентификаторов в (a). Посмотрите, что id вNSDictionaryи вы получите href.C) это файл первой главы, чтобы показать пользователю. Выясните, что такое полный путь (подсказка: это там, где вы распаковали zip-файл в (3) плюс базовый каталог файла OPF в (6))
8) создать
NSURLиспользуяfileURLWithPath:, где путь-это полный путь от (7c). Загрузите этот запрос используяUIWebViewвы создали в (1).вам необходимо выполнить вперед / назад кнопки или свайпы или что-то, так что пользователи могут переходить от одной главы к другой. Используйте
<spine>чтобы решить, какой файл показывать дальше-the<itemrefs>в XML находятся в том порядке, в котором они должны отображаться для читателя.
по-видимому, EPUB-это" просто " формат XML, поэтому, если у вас есть синтаксический анализатор xml и спец все должно быть нормально.
плюс немного туто? Получайте удовольствие!
EDIT: вы также можете прочитать некоторый код здесь, это для генерации epub, а не для их чтения, но код может быть полезен.
редактировать еще раз: и СМ ссылки на связанные вопросы в правой боковой панели, есть некоторые ссылки в ответах на бесплатные чтения электронных книг, которые поддерживают формат epub.
EDIT 3: Вы должны добавить комментарий при редактировании вашего вопроса, чтобы люди, которые отвечают вам, могли продолжить обсуждение (если вы не комментируете, мы не заметили вашего редактирования).
Итак, синтаксический анализ не удался, потому что вы не читали спецификацию или связанные с ней вопросы о переполнении стека... *.файл epub-это сжатая папка, содержащая XML-файл(ы), а не простой xml.
Я прочитал этот учебник один раз (требуется бесплатная регистрация, извините), и это дало мне отличное введение в ePub. deverloperWorks учебник здесь
Я настоятельно рекомендую вам посмотреть на некоторые из библиотек обработки XML. Если вы просто хотите получить конкретную информацию из XML-файла, то вы можете выбрать правильный разбор стратегии.
Я играю вокруг, чтобы создать epub-фреймворк для приложений iphone.
на данный момент (я действительно только начинаю) я могу создать титульную страницу со ссылками на главы.
мой подход
- основы использования производительности iPhone как слой (возможно, я меняю на phonegap) что в основном позволяет использовать javascript приложения как приложения для iphone
- добавьте распакованный epub в качестве ресурса к проекту
- разбирать все это с настроенным версия epub.js (где-то на google-коде)
прямо сейчас я смотрю на pageflip, какой-то графический интерфейс и незначительные проблемы с юзабилити (сохраните текущую страницу beingviewed)
Я надеюсь, что даст вам представление о том, как начать
Джонатан Уайт (schwa) разработал решение ObjC для анализа и отображения документов ePub на iPhone. Это часть его сенсорного кода с открытым исходным кодом репозитория.
Comments