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.
Apparemment, EPUB est "juste" un format XML, donc si vous avez un analyseur xml et les spécifications, cela devrait être correct.
Plus un peu de tuto ? S'amuser!
EDIT: vous pouvez également lire du code ici , c'est pour générer epub, pas pour les lire mais le code peut être utile.
MODIFIER à nouveau: Et voir les liens vers la question connexe dans la barre latérale droite, il y a des liens dans les réponses au lecteur de livre électronique gratuit qui prend en charge ePub.
EDIT 3: Vous devez ajouter un commentaire lorsque vous modifiez votre question afin que les personnes qui vous répondent puissent continuer la discussion (si vous ne commentez pas, nous ne sommes pas remarqués de votre modification).
Ainsi, l'analyse échoue parce que vous n'avez pas lu les spécifications ou les questions associées sur Stack Overflow ... * Le fichier .epub est un dossier compressé contenant des fichiers XML, et non du xml.
la source
J'ai lu ce tutoriel une fois (inscription gratuite requise, désolé) et il m'a donné une excellente introduction à ePub. Tutoriel deverloperWorks ici
Je vous suggère fortement de regarder certaines des bibliothèques de traitement XML. Si vous souhaitez simplement extraire des informations spécifiques du fichier XML, vous pouvez choisir la bonne stratégie d'analyse.
la source
il existe un fbreader de projet open source,
il prend également en charge l'iphone
http://www.fbreader.org/about.php
la source
Je joue pour créer un framework epub pour les applications iPhone.
Pour le moment (je viens de commencer), je peux générer une page de titre avec des liens vers les chapitres.
Mon approche est
En ce moment, je suis à la recherche de pagesflip, d'une sorte d'interface graphique et de problèmes mineurs d'utilisation (enregistrez la page en cours de visualisation)
J'espère que cela vous donne une idée sur la façon de commencer
la source
Jonathan Wight (schwa) a développé une solution ObjC pour analyser et afficher les documents ePub sur l'iPhone. Cela fait partie de son référentiel open source TouchCode.
la source