Das EPUB-Format vereint eine Reihe verschiedener Spezifikationen / Formate:
- man kann sagen, wie der Inhalt des Buches aussehen soll (eine Teilmenge von XHTML 1.1 + CSS)
- eine, um ein "Manifest" zu definieren, das alle Dateien auflistet, aus denen dieser Inhalt besteht (OPF, eine XML-Datei)
- eine, um zu definieren, wie alles verpackt ist (OEBPS: eine Zip-Datei von allem im Manifest plus ein paar zusätzliche Dateien)
Die Spezifikationen sehen ein bisschen entmutigend aus, aber sobald Sie die Grundlagen (Entpacken, Parsen von XML) kennen, ist es nicht besonders schwierig oder komplex.
Sie müssen herausfinden, wie Sie das EPUB herunterladen, irgendwo entpacken, das Manifest analysieren und dann den relevanten Inhalt anzeigen können.
Einige Hinweise, wenn Sie gerade erst anfangen:
Um Inhalte anzuzeigen, verwenden Sie zunächst ein UIWebView
.
Hier ist eine Schritt-für-Schritt-Anleitung für Ihren Code:
1) Erstellen Sie eine Ansicht mit a UIWebView
2) Laden Sie die EPUB-Datei herunter
3) Entpacken Sie es mithilfe der oben verlinkten Zip-Bibliothek in ein Unterverzeichnis im Dokumentenordner Ihrer App
4) Analysieren Sie die XML-Datei unter META-INF/container.xml
(wenn diese Datei nicht vorhanden ist, ist die EPUB ungültig) mit TBXML, das oben verlinkt ist
5) Suchen Sie in dieser XML die erste "Root-Datei" mit Medientyp application/oebps-package+xml
. Dies ist die OPF-Datei für das Buch.
6) Analysieren Sie die OPF-Datei (auch XML).
7) Jetzt müssen Sie wissen, was das erste Kapitel des Buches ist.
a) Jeder <item>
im <manifest>
Element hat eine ID und eine href. Speichern Sie diese an einem Ort, an NSDictionary
dem der Schlüssel die ID und das Objekt die href ist.
b) Schauen Sie sich die erste <itemref>
in der <spine>
. Es hat ein idref-Attribut, das einer der IDs in (a) entspricht. Schlagen Sie diese ID in der NSDictionary
und Sie erhalten eine href.
c) Dies ist die Datei des ersten Kapitels, die den Benutzer zeigt. Ermitteln Sie den vollständigen Pfad (Hinweis: Er befindet sich überall dort, wo Sie die Zip-Datei in (3) und im Basisverzeichnis der OPF-Datei in (6) entpackt haben.)
8) Erstellen Sie eine NSURL
Verwendung fileURLWithPath:
, wobei der Pfad der vollständige Pfad von (7c) ist. Laden Sie diese Anfrage mit der UIWebView
in (1) erstellten.
Sie müssen Vorwärts- / Rückwärtsschaltflächen oder Wischbewegungen oder ähnliches implementieren, damit Benutzer von einem Kapitel zum anderen wechseln können. Verwenden Sie die Option <spine>
, um herauszufinden, welche Datei als Nächstes <itemrefs>
angezeigt werden soll. Die Dateien in XML befinden sich in der Reihenfolge, in der sie dem Leser angezeigt werden sollen.