Le format EPUB rassemble un ensemble de spécifications / formats différents:
- un pour dire à quoi devrait ressembler le contenu du livre (un sous-ensemble de XHTML 1.1 + CSS)
- un pour définir un "manifeste" qui répertorie tous les fichiers qui composent ce contenu (OPF, qui est un fichier XML)
- un pour définir comment tout est empaqueté (OEBPS: un fichier zip de tout ce qui se trouve dans le manifeste plus quelques fichiers supplémentaires)
Les spécifications semblent un peu intimidantes, mais en fait, une fois que vous avez les bases (décompression, analyse XML), ce n'est pas particulièrement difficile ou complexe.
Vous devrez trouver comment télécharger l'EPUB, le décompresser quelque part, analyser le manifeste, puis afficher le contenu pertinent.
Quelques conseils si vous débutez:
Pour afficher le contenu, utilisez simplement un UIWebView
pour le moment.
Voici une étape par étape de haut niveau pour votre code:
1) Créez une vue avec un UIWebView
2) Téléchargez le fichier EPUB
3) Décompressez-le dans un sous-répertoire dans le dossier des documents de votre application à l'aide de la bibliothèque zip, liée ci-dessus
4) analyser le fichier XML à META-INF/container.xml
(si ce fichier n'existe pas, l'EPUB n'est pas valide) en utilisant TBXML, lié ci-dessus
5) Dans ce XML, recherchez le premier "rootfile" avec le type de média application/oebps-package+xml
. Il s'agit du fichier OPF du livre.
6) analyser le fichier OPF (également XML)
7) Vous devez maintenant savoir quel est le premier chapitre du livre.
a) chacun <item>
dans l' <manifest>
élément a un id et un href. Stockez-les dans un NSDictionary
où la clé est l'id et l'objet est le href.
b) Regardez le premier <itemref>
dans le <spine>
. Il a un attribut idref qui correspond à l'un des identifiants de (a). Recherchez cet identifiant dans le NSDictionary
et vous obtiendrez un href.
c) c'est le fichier du premier chapitre à montrer à l'utilisateur. Déterminez quel est le chemin complet (indice: c'est là où vous avez décompressé le fichier zip dans (3) plus le répertoire de base du fichier OPF dans (6))
8) créez un NSURL
using fileURLWithPath:
, où le chemin est le chemin complet de (7c). Chargez cette demande en utilisant le que UIWebView
vous avez créé dans (1).
Vous devrez implémenter des boutons avant / arrière, des balayages ou quelque chose pour que les utilisateurs puissent passer d'un chapitre à un autre. Utilisez le <spine>
pour déterminer quel fichier afficher ensuite - les <itemrefs>
dans le XML sont dans l'ordre dans lequel ils doivent apparaître au lecteur.