Lendo o formato ePub

Eu estou tentando desenvolver um aplicativo para iPhone para ler arquivos ePub. Existe algum quadro disponível para desenvolver isso? Eu não tenho idéia sobre como ler esse formato de arquivo. Eu tentei analisar um arquivo de exemplo com extensão .epub usando o NSXML Parser, mas isso falha.

O formato EPUB reúne várias especificações / formatos diferentes:

  • um para dizer como deve ser o conteúdo do livro (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 (descompactando, analisando XML), não é particularmente difícil ou complexo.

Você precisará descobrir como baixar o EPUB, descompactá-lo em algum lugar, analisar o manifesto e exibir o conteúdo relevante.

Alguns pointers se você está apenas começando:

  • parse xml
  • descompactar

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) crie uma visão com um UIWebView

2) baixe o arquivo EPUB

3) descompacte-o em um subdiretório na pasta de documentos do seu aplicativo usando a biblioteca zip, vinculada acima

4) analise o arquivo XML em META-INF/container.xml (se esse arquivo não existir, o EPUB é inválido) usando TBXML, vinculado acima

5) Neste XML, encontre o primeiro “rootfile” com o application/oebps-package+xml mídia application/oebps-package+xml . Este é o arquivo OPF do livro.

6) analisar o arquivo OPF (também XML)

7) agora você precisa saber qual é o primeiro capítulo do livro.

a) cada no elemento tem um id e um href. Armazene estes em um NSDictionary onde a chave é o id e o object é o href.

b) Veja o primeiro na . Tem um atributo idref que corresponde a um dos ids em (a). Procure esse id no NSDictionary e você receberá um href.

c) este é o arquivo do primeiro capítulo para mostrar ao usuário. Descobrir qual é o caminho completo (dica: é onde quer que você tenha descompactado o arquivo zip em (3) mais o diretório base do arquivo OPF em (6))

8) crie uma NSURL usando fileURLWithPath: onde o caminho é o caminho completo de (7c). Carregue esta solicitação usando o UIWebView você criou em (1).

Você precisará implementar botões ou deslizes para frente / para trás ou algo assim para que os usuários possam passar de um capítulo para outro. Use o para descobrir qual arquivo exibir em seguida – os 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 , tudo ficará bem.

Mais um pouco 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 a questão relacionada na barra lateral direita, há alguns links nas respostas para o leitor de e-book gratuito que suporta o ePub.


EDIT 3: Você deve adicionar um comentário ao editar sua pergunta para que as pessoas que lhe responderem possam continuar a discussão (se você não comentar, não seremos notados sobre sua edição).

Portanto, a análise falha porque você não leu a especificação ou perguntas relacionadas no Stack Overflow … * .epub é uma pasta compactada contendo arquivo (s) XML, e não xml simples.

Eu li este tutorial uma vez (registro gratuito necessário, desculpe) e isso me deu uma ótima introdução ao ePub. tutorial de deverloperWorks aqui

Eu sugiro que você olhe algumas das bibliotecas de processamento XML. Se você quiser apenas obter informações específicas do arquivo XML, poderá escolher a estratégia de análise correta.

existe um fbreader de projeto de código aberto,

também suporta iphone

http://www.fbreader.org/about.php

Estou jogando para criar um epub-framework para aplicativos para iphone.

No momento (eu realmente apenas startet) eu posso gerar uma página de título com links para os capítulos.

Minha abordagem é

  • Use quickconnect iphone framework como uma camada (talvez eu mude para phonegap) que basicamente permite aplicativos javascript como aplicativos para iphone
  • Adicione o epub UNZIPed como um recurso para o projeto
  • Analise a coisa toda com uma versão personalizada do epub.js (em algum lugar no google-code)

No momento estou olhando para o pageflip, algum tipo de gui e pequenos problemas de usabilidade (salve a página atual sendo visualizada)

Espero que te dê uma ideia de como começar

Jonathan Wight (schwa) desenvolveu uma solução ObjC para analisar e exibir documentos ePub no iPhone. Faz parte do seu repository de código aberto TouchCode.