Format EPUB łączy kilka różnych specyfikacji / formatów:
- jedno, aby powiedzieć, jak powinna wyglądać treść książki (podzbiór XHTML 1.1 + CSS)
- jeden do zdefiniowania „manifestu”, który zawiera listę wszystkich plików tworzących tę zawartość (OPF, który jest plikiem XML)
- jeden do określenia, jak wszystko jest pakowane (OEBPS: plik zip zawierający wszystko w manifeście plus kilka dodatkowych plików)
Specyfikacje wyglądają nieco zniechęcająco, ale w rzeczywistości po opanowaniu podstaw (rozpakowywanie, parsowanie XML) nie jest to szczególnie trudne ani skomplikowane.
Musisz dowiedzieć się, jak pobrać plik EPUB, gdzieś go rozpakować, przeanalizować manifest, a następnie wyświetlić odpowiednią zawartość.
Kilka wskazówek, jeśli dopiero zaczynasz:
Aby wyświetlić zawartość, użyj UIWebView
na razie.
Oto wysoki poziom, krok po kroku, dotyczący Twojego kodu:
1) utwórz widok za pomocą pliku UIWebView
2) pobierz plik EPUB
3) rozpakuj go do podkatalogu w folderze dokumentów aplikacji za pomocą biblioteki zip, do której link znajduje się powyżej
4) przeanalizuj plik XML pod adresem META-INF/container.xml
(jeśli ten plik nie istnieje, plik EPUB jest nieprawidłowy) przy użyciu TBXML, do którego link znajduje się powyżej
5) W tym kodzie XML znajdź pierwszy „plik główny” z typem nośnika application/oebps-package+xml
. To jest plik OPF dla książki.
6) przeanalizuj plik OPF (również XML)
7) Teraz musisz wiedzieć, jaki jest pierwszy rozdział książki.
a) każdy <item>
w <manifest>
elemencie ma identyfikator i href. Przechowuj je w NSDictionary
miejscu, w którym klucz jest identyfikatorem, a obiektem jest href.
b) Spójrz na pierwszy <itemref>
w <spine>
. Posiada atrybut idref, który odpowiada jednemu z identyfikatorów w (a). Wyszukaj ten identyfikator w, NSDictionary
a otrzymasz href.
c) jest to plik z pierwszego rozdziału do pokazania użytkownikowi. Sprawdź, jaka jest pełna ścieżka (wskazówka: jest to miejsce, w którym rozpakowałeś plik zip w (3) oraz katalog podstawowy pliku OPF w (6))
8) utwórz NSURL
using fileURLWithPath:
, gdzie ścieżka jest pełną ścieżką z (7c). Załaduj to żądanie, korzystając z UIWebView
utworzonego w (1).
Będziesz musiał zaimplementować przyciski do przodu / do tyłu, przesunięcia lub coś w tym rodzaju, aby użytkownicy mogli przechodzić z jednego rozdziału do drugiego. Użyj, <spine>
aby dowiedzieć się, który plik pokazać jako następny - <itemrefs>
w XML są w kolejności, w jakiej powinny pojawić się czytelnikowi.
Najwyraźniej EPUB to „tylko” format XML, więc jeśli masz parser xml i specyfikację, wszystko powinno być w porządku.
Plus trochę tuto ? Baw się dobrze!
EDIT: można również odczytać kodu tutaj , to jest do generowania EPUB, nie je czytać, ale kod może być przydatne.
EDYTUJ ponownie: I zobacz linki do pokrewnych pytań na prawym pasku bocznym, są linki w odpowiedziach na darmowy czytnik e-booków, który obsługuje ePub.
EDYCJA 3: Powinieneś dodać komentarz, kiedy edytujesz swoje pytanie, aby osoby, które na nie odpowiedziały, mogły kontynuować dyskusję (jeśli nie skomentujesz, nie zauważyliśmy Twojej zmiany).
Tak więc analiza nie powiodła się, ponieważ nie przeczytałeś specyfikacji ani powiązanych pytań dotyczących Stack Overflow ... Plik * .epub to spakowany folder zawierający pliki XML, a nie zwykły plik XML.
źródło
Przeczytałem raz ten samouczek (wymagana bezpłatna rejestracja, przepraszam) i dał mi świetne wprowadzenie do ePub. poradnik deverloperWorks tutaj
Gorąco sugeruję przyjrzenie się niektórym bibliotekom przetwarzającym XML. Jeśli chcesz tylko uzyskać określone informacje z pliku XML, możesz wybrać odpowiednią strategię analizowania.
źródło
istnieje fbreader projektu open source,
obsługuje również iphone'a
http://www.fbreader.org/about.php
źródło
Gram wokół, aby stworzyć platformę epub dla aplikacji na iPhone'a.
W tej chwili (tak naprawdę dopiero zaczynam) mogę wygenerować stronę tytułową z linkami do rozdziałów.
Moje podejście jest takie
W tej chwili przyglądam się zmianie strony, jakiegoś rodzaju GUI i drobnych problemów z użytecznością (zapisz przeglądaną bieżącą stronę)
Mam nadzieję, że daje ci pomysł, jak zacząć
źródło
Jonathan Wight (schwa) opracował rozwiązanie ObjC do analizowania i wyświetlania dokumentów ePub na iPhonie. Jest to część jego repozytorium open source TouchCode.
źródło