O formato EPUB reúne um monte de especificações / formatos diferentes:
- um para dizer como o conteúdo do livro deve ser parecido (um subconjunto de XHTML 1.1 + CSS)
- um para definir um "manifesto" que lista todos os arquivos que compõem esse conteúdo (OPF, que é um arquivo XML)
- um para definir como tudo é empacotado (OEBPS: um arquivo zip de tudo no manifesto mais alguns arquivos extras)
As especificações parecem um pouco assustadoras, mas, na verdade, uma vez que você tenha o básico (descompactar, analisar XML), não é particularmente difícil ou complexo.
Você precisará descobrir como fazer o download do EPUB, descompactá-lo em algum lugar, analisar o manifesto e, em seguida, exibir o conteúdo relevante.
Algumas dicas se você está apenas começando:
Para exibir o conteúdo, basta usar um UIWebView
por enquanto.
Aqui está um passo a passo de alto nível para o seu código:
1) criar uma visualização com um UIWebView
2) baixar o arquivo EPUB
3) descompacte-o em um subdiretório na pasta de documentos do seu aplicativo usando a biblioteca zip, com link acima
4) analise o arquivo XML em META-INF/container.xml
(se este arquivo não existir, o EPUB é inválido) usando TBXML, vinculado acima
5) Neste XML, encontre o primeiro "rootfile" com tipo de mídia application/oebps-package+xml
. Este é o arquivo OPF do livro.
6) analise o arquivo OPF (também XML)
7) agora você precisa saber qual é o primeiro capítulo do livro.
a) cada um <item>
no <manifest>
elemento possui um id e um href. Armazene-os em um local NSDictionary
onde a chave seja o id e o objeto seja o href.
b) Olhe para o primeiro <itemref>
no <spine>
. Ele tem um atributo idref que corresponde a um dos ids em (a). Procure esse id no NSDictionary
e você obterá um href.
c) este é o arquivo do primeiro capítulo a ser mostrado ao usuário. Descubra qual é o caminho completo (dica: é onde quer que você descompactou o arquivo zip em (3) mais o diretório base do arquivo OPF em (6))
8) crie um NSURL
using fileURLWithPath:
, onde o caminho é o caminho completo de (7c). Carregue esta solicitação usando o que UIWebView
você criou em (1).
Você precisará implementar botões de avançar / retroceder ou deslizar ou algo assim para que os usuários possam mover de um capítulo para outro. Use <spine>
para descobrir qual arquivo mostrar a seguir - <itemrefs>
no XML estão na ordem em que devem aparecer para o leitor.
Aparentemente, o EPUB é "apenas" um formato XML, portanto, se você tiver um analisador xml e a especificação, não haverá problema.
Mais um pouco de tuto ? Diverta-se!
EDIT: você também pode ler algum código aqui , isso é para gerar epub, não lê-los, mas o código pode ser útil.
EDITAR novamente: E veja os links para perguntas relacionadas na barra lateral direita, existem alguns links nas respostas para o leitor de e-book gratuito que suporta ePub.
EDIT 3: Você deve adicionar um comentário ao editar sua pergunta para que as pessoas que responderem possam continuar a discussão (se você não comentar, não notamos sua edição).
Portanto, a análise falha porque você não leu as especificações ou questões relacionadas no Stack Overflow ... * .epub file é uma pasta compactada que contém arquivo (s) XML, não xml simples.
fonte
Li este tutorial uma vez (é necessário registro gratuito, desculpe) e ele me deu uma ótima introdução ao ePub. Tutorial do deverloperWorks aqui
Eu sugiro que você olhe para algumas das bibliotecas de processamento XML. Se você deseja apenas obter informações específicas do arquivo XML, pode escolher a estratégia de análise correta.
fonte
há um fbreader de projeto de código aberto,
também suporta iphone
http://www.fbreader.org/about.php
fonte
Estou brincando para criar uma estrutura epub para aplicativos de iphone.
No momento (estou apenas começando), posso gerar uma página de título com links para os capítulos.
Minha abordagem é
No momento estou olhando para o pageflip, algum tipo de interface gráfica e pequenos problemas de usabilidade (salve a página atual que está sendo visualizada)
Espero que tenha dado uma ideia de como começar
fonte
Jonathan Wight (schwa) desenvolveu uma solução ObjC para analisar e exibir documentos ePub no iPhone. É parte de seu repositório de código aberto TouchCode.
fonte