Libmobi
C Biblioteca para lidar com documentos de formato de e -book Mobipocket/Kindle (MOBI).
A biblioteca vem com várias ferramentas de linha de comando para trabalhar com os e -books MOBI. A fonte de ferramentas também pode ser usada como exemplo sobre como usar a biblioteca.
Características:
- Leitura e análise:
- Alguns formatos de palmdoc de texto mais antigos (PDB),
- Arquivos mobipocket (PRC, MOBI),
- Arquivos MOBI mais recentes, incluindo formato KF8 (AZW, AZW3),
- Arquivos de impressão de réplica (AZW4)
- recriando arquivos de origem usando índices
- Referências de reconstrução (links e incorporadas) em arquivos HTML
- Reconstruindo a estrutura da fonte que pode ser alimentada de volta ao Kindlegen
- Reconstruindo a marcação do dicionário (orth, tags de infração)
- Escrevendo documentos carregados de volta
- Edição de metadados
- manuseio de documentos criptografados
- Criptografar documentos para uso em Kindles Eink
Pendência:
- melhorar a escrita
- serialize RawML em registros brutos
- Registros de resgate de processos
Documentação doxygen:
- funções,
- Estruturas para os metadados e dados de registros brutos e incomparados,
- Estruturas para os metadados e dados de registros analisados, dados,
- enums
Fonte:
Pacotes:
Instalação:
[for git] $ ./autogen.sh
$ ./configure
$ make
[optionally] $ make test
$ sudo make install
No MacOS, você pode instalar via Homebrew com brew install libmobi .
Sistemas de construção alternativos
- A maneira suportada de construção do projeto é usando o AutoTools.
- Opcionalmente, o projeto fornece suporte básico para sistemas CMake, Xcode e MSVC ++. No entanto, essas configurações alternativas não estão cobrindo todas as opções do projeto AutoTools. Eles também não são testados e não são atualizados regularmente.
Uso
- Incluir um único arquivo:
#include <mobi.h> - Bandeira do vinculador:
-lmobi - Uso básico:
#include <mobi.h>
/* Initialize main MOBIData structure */
/* Must be deallocated with mobi_free() when not needed */
MOBIData * m = mobi_init ();
if ( m == NULL ) {
return ERROR ;
}
/* Open file for reading */
FILE * file = fopen ( fullpath , "rb" );
if ( file == NULL ) {
mobi_free ( m );
return ERROR ;
}
/* Load file into MOBIData structure */
/* This structure will hold raw data/metadata from mobi document */
MOBI_RET mobi_ret = mobi_load_file ( m , file );
fclose ( file );
if ( mobi_ret != MOBI_SUCCESS ) {
mobi_free ( m );
return ERROR ;
}
/* Initialize MOBIRawml structure */
/* Must be deallocated with mobi_free_rawml() when not needed */
/* In the next step this structure will be filled with parsed data */
MOBIRawml * rawml = mobi_init_rawml ( m );
if ( rawml == NULL ) {
mobi_free ( m );
return ERROR ;
}
/* Raw data from MOBIData will be converted to html, css, fonts, media resources */
/* Parsed data will be available in MOBIRawml structure */
mobi_ret = mobi_parse_rawml ( rawml , m );
if ( mobi_ret != MOBI_SUCCESS ) {
mobi_free ( m );
mobi_free_rawml ( rawml );
return ERROR ;
}
/* Do something useful here */
/* ... */
/* For examples how to access data in MOBIRawml structure see mobitool.c */
/* Free MOBIRawml structure */
mobi_free_rawml ( rawml );
/* Free MOBIData structure */
mobi_free ( m );
return SUCCESS ;- Para exemplos de uso, consulte as ferramentas
Requisitos
- Compilador de suporte C99
- zlib (opcional, configure ---with-zlib = Não para usar incluído miniz.c)
- libxml2 (opcional, configurar ---with-Libxml2 = Não para usar o XMLWriter interno)
- Testado com GCC (> = 4.2.4), Clang (LLVM> = 3.4), Sun C (> = 5.13), MSVC ++ (2015)
- Construa Linux, MacOS, Windows (MSVC ++, Mingw), Android, Solaris
- Arquiteturas testadas: x86, x86-64, braço, PPC
- Trabalha com compilado cruzado no Kindle :)
Testes
Projetos usando libmobi
- KYBOOK 2 LEITOR
- @Voice Aloud Reader
- Plugin QLMobi Quicklook
- Reader de Liberrera
- ... (deixe -me saber para incluir seu projeto)
Licença:
- LGPL, versão 3 ou mais tarde
Créditos:
- A descompressão Huffman e os algoritmos de análise KF8 foram aprendidos estudando o código -fonte Python do Kindleunpack.
- Obrigado a todos os colaboradores do MobileRead Mobi Wiki