- Guia rápido para construir livros em formato ePUB
- Introdução
-
Processo de elaboração do ePUB
- Processo manual versus automático
- ePUB 2.0.1: as três especificações essenciais
-
ePUB Passo a Passo
- Passo 1 - Elaborar os conteúdos do livro em formato XHTML, CSS e imagens
- Passo 2 - Construir estrutura de diretórios do ePUB, conforme …
- Passo 3 - Construir arquivo mimetype
- Passo 4 - Construir arquivo container.xml
- Passo 5 - Contruir arquivo content.opf
- Passo 6 - Contruir arquivo toc.ncx
- Passo 7 - Empacotar os arquivos ePUB em formato ZIP
- Passo 8 - Verificar conformidade do arquivo ePUB
- Futuro do formato ePUB - versão 3.0
- Referências Bibliográficas
Guia rápido para construir livros em formato ePUB
Introdução
O formato ePUB (sigla para electronic publication) é um padrão livre e aberto para livros eletrônicos (e-book) e outros tipos de publicação desenvolvido e mantido pela IDPF - International Digital Publishing Fórum. O uso do ePUB permite adaptar e otimizar a apresentação de um conteúdo eletrônico em diferentes dispositivos de saída utilizados por um leitor desse formato (eReader).
A versão 2.0.1 do ePUB é recomendada pelo IDPF desde maio de 2011. Está em fase de revisão pela comunidade, desde fevereiro de 2011, a versão 3.0 do ePUB, como especificação proposta. Um resumo sobre as diferenças entre as duas versões será apresentada na seção "Futuro do formato ePUB - versão 3.0".
O projeto SciELO Livros adota o ePUB como formato complementar ao PDF, o qual é utilizado para visualização off-line e on-line do livro completo ou de seus capítulos individualmente por meio do seu web site. Nesse caso, o ePUB complementa a visualização off-line do livro ao disponibilizar esse formato para download e uso em qualquer eReader.
Esta Guia Rápida abordará o processo de elaboração do ePUB utilizando a versão 2.0.1, baseando-se em referências encontradas na internet sobre esse tema, assim como experiências obtidas durante o projeto SciELO Livros no uso de ferramentas de conversão automática para ePUB, como também a própria metodologia de publicação da SciELO para periódicos científicos.
O propósito desse Guia Rápida é possibilitar a repetição sistemática das etapas do processo de construção de um livro em formato ePUB, introduzindo os principais elementos da especificação desse padrão e suas respectivas referências para consulta futura.
Processo de elaboração do ePUB
O processo de elaboração descrito a seguir está baseado nas referências 5 e 6, as quais seguem as recomendações e especificações desenvolvidas e mantidas pelo IDPF, disponíveis nas referências 1, 2, 3 e 4.
Processo manual versus automático
A equipe do projeto SciELO Livros realizou alguns testes para geração de formato ePUB a partir de arquivos em formato PDF, PageMaker, InDesign e Quark utilizando os softwares Adobe InDesign, Calibre e QuarkXPress. Dos testes realizados, houve perda de informação, indisponibilidade da tabela de conteúdos, desestruturação textual, ausência de metadados, problemas de disposição de imagens no corpo do texto, falta de harmonização e dificuldades de estabelecer padrão de estilo de apresentação, dentre outros problemas.
Estes testes foram realizados utilizando os arquivos originais de diferentes editores sem qualquer padronização, o que também dificultou o uso de programas de geração automática de ePUB. Pela impossibilidade a curto prazo de estabelecer padrões de elaboração desses arquivos originais, o que alteraria o próprio processo de publicação de livros dos editores, e pelos compromissos estabelecidos no projeto SciELO Livros, foi decidido utilizar um processo manual de publicação dos livros em formato ePUB.
Para mais informação sobre programas de edição e leitura de publicações em formato ePUB, ver referência 5, seção "Software".
ePUB 2.0.1: as três especificações essenciais
A versão 2.0.1 do ePUB consiste no uso de três especificações 5:
- Open Publication Structure (OPS) 2.0.1, contém a estrutura e formatação dos conteúdos 7
- Open Packaging Format (OPF) 2.0.1, descreve a estrutura do arquivo .epub em XML 8
- Open Container Format (OCF) 2.0.1, agrega todos os arquivos como um arquivo compactado ZIP 9
O ePUB utiliza internamente XHTML para estruturar o conteúdo, CSS para prover o layout e formatação e XML para informação de controle (manifesto do documento, tabela de conteúdos e os metadados da publicação). Todos esses arquivos são empacotados em um arquivo ZIP com extensão .epub.
A especificação OPS 2.0.1 usa o XHTML 1.1 (application/xhtml+xml) ou DTBook para construção de cada parte do livro (elementos pré-textuais e capítulos) em arquivos individuais. O layout e formatação são definidos utilizando um sub-conjunto de CSS 2.0 [10] (text/css). Para imagens, são utilizados arquivos em formato PNG (image/png), JPEG (image/jpeg), GIF (image/gif) e SVG (image/svg+xml). A especificação OPF 2.0.1 disponibiliza o mecanismo necessário para integrar todos os componentes (arquivos) da especificação OPS, provendo estrutura e semântica adicionais para publicações eletrônicas. O OPF é representado por dois arquivos XML com as extensões .opf e .ncx.
O arquivo .opf contém os metadados do livro, o seu manifesto (listagem e descrição de cada arquivo do ePUB, com exceção dos arquivos mimetype, container.xml e content.opf) e a ordem linear de leitura das partes do livro (elementos pré-textuais e capítulos).
O arquivo .ncx (Navigation Control file for XML) contém a estrutura hierárquica da tabela de conteúdos além de alguns metadados.
A especificação OCF 2.0.1 é responsável por definir como os arquivos do ePUB, conformados pelas especificações OPS e OPF, são organizados em um arquivo ZIP compactado, incluindo dois arquivos adicionais: mimetype e container.xml.
O arquivo mimetype é um documento texto em formato ASCII e deve conter uma linha com a informação application/epub+zip.
O arquivo container.xml tem como função indicar os conteúdos do livro, descritos no arquivo .opf.
De acordo com o OCF 2.0.1, os arquivos do ePUB devem ser organizados na seguinte estrutura de diretórios:
--ZIP Container-- mimetype META-INF/ container.xml OPS/ book.opf chapter1.xhtml ch1-pic.png css/ style.css myfont.otf
Os arquivos dentro do diretório OPS podem ser organizados em diferentes sub-diretórios. Além do sub-diretório css da estrutura descrita acima, é permitido criar novos sub-diretório, como por exemplo, images para organizar as imagens do livro. Vide exemplo abaixo:
--ZIP Container-- mimetype META-INF/ container.xml OPS/ book.opf chapter1.xhtml images/ ch1-pic.png css/ style.css myfont.otf
Para informação detalhada das três especificações do ePUB 2.0.1, indica-se a leitura de cada uma das referências apontadas no texto.
ePUB Passo a Passo
Seguem abaixo os principais passos para disponibilizar um livro ou qualquer outra publicação eletrônica em formato ePUB 2.0.1, baseando-se na referência 6.
Passo 1 - Elaborar os conteúdos do livro em formato XHTML, CSS e imagens
Todas as partes de um livro devem ser representadas por arquivos XHTML individuais, com referências a estilos descritos em arquivo(s) CSS e imagens. Se o livro for dividido entre informação pré-textual, seis capítulos, uma seção de glossário e outra de referências bibliográficas, serão necessários nove arquivos XHTML. É possível enriquecer a estrutura XHTML desses arquivos para controlar o layout e estilo de apresentação dos conteúdos, além de agregar informação semântica nesses conteúdos, tais como capítulo, título, seção, rodapé e outros, como no exemplo abaixo:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <title>Introdução</title> <link href="css/scielobooks.css" rel="stylesheet" type="text/css" /> </head> <body lang="PT-BR"> <div class="chapter"> <div class="title"> <p>Introdução</p> </div> <div class="section"> <div class="title"> <p>Título da seção</p> </div> <p>Parágrafo 1 da seção</p> <p>Parágrafo 2 da seção</p> </div> </div> </body> </html>
A equipe SciELO Livros deve estabelecer um padrão próprio de estrutura XHTML e CSS a ser aplicado a toda coleção de livros em formato ePUB. Esse padrão permitirá estender, caso seja necessário, o conjunto de instruções CSS para customização de layout e estilo por editora ou por livro.
Exemplo de CSS correspondente ao XHTML do exemplo:
.title { font-size: 25px; font-weight: bold; } .section { padding-top: 30px; } .section .title { font-size: 130%; font-weight: bold; }
Os próximos passos utilizarão o livro "Mestres e Capoeiras Famosos da Bahia", da editora EDUFBA, formado por cinco capítulos (cinco arquivos XHTML), um arquivo CSS e sete imagens (sete arquivos em formato jpg), como segue:
- Capítulos: 01.htm, 02.htm, 03.htm, 04.htm, 05.htm
- CSS: scielobooks.css
- Imagens: 01img01.png, 01img02.png, 04img01.png, 04img02.png, 04img03.png, 04img04.png, 04img05.png
Passo 2 - Construir estrutura de diretórios do ePUB, conforme especificação OCF
Para organizar os arquivos de conteúdo e de controle do ePUB, criar a seguinte estrutura de diretórios e seus respectivos arquivos:
ePUB_Mestres_e_Capoeiras_Famosos_da_Bahia mimetype META-INF/ container.xml OPS/ content.opf toc.ncx 01.htm 02.htm 03.htm 04.htm 05.htm images/ 01img01.png 01img02.png 04img01.png 04img02.png 04img03.png 04img04.png 04img05.png css/ scielobooks.css
Com a estrutura de diretórios definida, certificar-se que os atributos href dos arquivos XHTML estejam apontando corretamente para o arquivo CSS e as imagens. Exemplo:
Arquivo 04.htm
... <link href="css/scielobooks.css" rel="stylesheet" type="text/css" /> ... <div class="image"> <p><a id="fig01"></a></p> <p><img src="images/04img01.png" alt="Imagem 01" /></p> </div> ...
Passo 3 - Construir arquivo mimetype
O mimetype é um arquivo ASCII contendo uma única linha com a seguinte string
application/epub+zip
Passo 4 - Construir arquivo container.xml
O arquivo container.xml deve ter a seguinte estrutura:
<?xml version="1.0" encoding="UTF-8" ?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OPS/content.opf" media-type="application/oebps-package+xml"/> </rootfiles> </container>
O atributo full-path contém o caminho do arquivo content.opf, conforme estrutura de diretórios definida no Passo 2.
Passo 5 - Contruir arquivo content.opf
O arquivo content.opf contém quarto elementos principais: metadata, manifest, spine e guide. O elemento metadata contém informação descritiva da publicação, baseado no padrão Dublin Core. O elemento manifest lista todos os arquivos que formam parte da publicação, com exceção dos arquivos mimetye, container.xml e content.opf. A ordem da lista é irrelevante. O elemento spine lista todos os arquivos XHTML que representam os conteúdos da publicação (elementos pré-textuais e capítulos). Sua ordem é relevante. Os arquivos que não estiverem listados no elemento spine não serão acessíveis em nenhuma parte da publicação. O elemento guide é opcional e descreve as principais partes da publicação, tais como capa, tabela de conteúdos, índice, glossário, etc.
<?xml version="1.0" encoding="UTF-8" ?> <package version="2.0" unique-identifier="PrimaryID" xmlns="http://www.idpf.org/2007/opf"> <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:title>Mestres e Capoeiras Famosos da Bahia</dc:title> <dc:identifier id="PrimaryID" opf:scheme="URN">xxxxx</dc:identifier> <dc:identifier opf:scheme="URI">http://domain.org/xxxxx</dc:identifier> <dc:language>pt</dc:language> <dc:creator opf:role="aut" opf:file-as="Abib, Pedro">Pedro Abib</dc:creator> <dc:publisher>Editora EDUFBA</dc:publisher> <dc:description>O livro foi preparado por Pedro Abib – com significativos trabalhos prestados à capoeira – coordenador da pesquisa que colheu as informações, bases do conteúdo desta publicação. Pedro também é um dos coordenadores do Grupo MEL – Mídia, Memória, Educação e Lazer, da Faculdade de Educação da Universidade Federal da Bahia, do qual participa a maioria dos pesquisadores que trabalhou na coleta das informações. Embora a pesquisa, a reflexão e os estudos sobre a capoeira, do ponto de vista acadêmico tenham boa guarida no MEL, suas ações não se limitam a isto e se estendem para fora dos muros da universidade, estabelecendo relações de intimidades com todo o universo da capoeira; fator que foi essencial à realização da pesquisa, principalmente quando o recurso da oralidade se fez necessário.</dc:description> <dc:coverage></dc:coverage> <dc:source>SciELO Livros</dc:source> <dc:date opf:event="original-publication">2009</dc:date> <dc:date opf:event="ops-publication">2011-09-25T17:02:00Z</dc:date> <dc:rights></dc:rights> <dc:subject>Cultura</dc:subject> <dc:subject>Capoeira</dc:subject> <dc:subject>Bahia</dc:subject> </metadata> <manifest> <!-- Content Documents --> <item id="chapter-1" href="01.htm" media-type="application/xhtml+xml"/> <item id="chapter-2" href="02.htm" media-type="application/xhtml+xml"/> <item id="chapter-3" href="03.htm" media-type="application/xhtml+xml"/> <item id="chapter-4" href="04.htm" media-type="application/xhtml+xml"/> <item id="chapter-5" href="05.htm" media-type="application/xhtml+xml"/> <!-- CSS Style Sheets --> <item id="css" href="css/scielobooks.css" media-type="text/css"/> <!-- Images --> <item id="image-1" href="images/01img01.png" media-type="image/png"/> <item id="image-2" href="images/01img02.png" media-type="image/png"/> <item id="image-3" href="images/04img01.png" media-type="image/png"/> <item id="image-4" href="images/04img02.png" media-type="image/png"/> <item id="image-5" href="images/04img03.png" media-type="image/png"/> <item id="image-6" href="images/04img04.png" media-type="image/png"/> <item id="image-7" href="images/04img05.png" media-type="image/png"/> <!-- NCX --> <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/> </manifest> <spine toc="ncx"> <itemref idref="chapter-1" linear="yes"/> <itemref idref="chapter-2" linear="yes"/> <itemref idref="chapter-3" linear="yes"/> <itemref idref="chapter-4" linear="yes"/> <itemref idref="chapter-5" linear="yes"/> </spine> <guide> <reference type="preface" title="Prefácio" href="01.htm"/> <reference type="text" title="Introdução" href="02.htm"/> <reference type="text" title="Aspectos históricos da capoeira" href="03.htm"/> <reference type="text" title="Capoeiras famosos da Bahia" href="04.htm"/> <reference type="text" title="Fontes consultadas" href="05.htm"/> <reference type="bibliography" title="Referências" href="05.htm#references"/> <reference type="loi" title="Índice das Ilustrações" href="05.htm#illustrations"/> </guide> </package>
O atributo href dos elementos item e reference deve conter o caminho e o nome do arquivo XHTML correspondente, de acordo com a estrutura de diretórios definida. O valor do atributo idref do elemento itemref deve ter correspondência com o mesmo valor de um atributo href do elemento item.
Passo 6 - Contruir arquivo toc.ncx
O arquivo toc.ncx correspondente deve ter a seguinte estrutura:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> <ncx version="2005-1" xml:lang="en" xmlns="http://www.daisy.org/z3986/2005/ncx/"> <head> <!-- The following four metadata items are required for all NCX documents, including those conforming to the relaxed constraints of OPS 2.0 --> <meta name="dtb:uid" content="http://domain.org/xxxxx"/> <meta name="dtb:depth" content="1"/> <meta name="dtb:totalPageCount" content="0"/> <meta name="dtb:maxPageNumber" content="0"/> </head> <docTitle> <text>Mestres e Capoeiras Famosos da Bahia</text> </docTitle> <docAuthor> <text>Pedro Abib</text> </docAuthor> <navMap> <navPoint class="preface" id="chapter-1" playOrder="1"> <navLabel><text>Prefácio</text></navLabel> <content src="01.htm"/> </navPoint> <navPoint class="introduction" id="chapter-2" playOrder="2"> <navLabel><text>Introdução</text></navLabel> <content src="02.htm"/> </navPoint> <navPoint class="chapter" id="chapter-3" playOrder="3"> <navLabel><text>Aspectos históricos da capoeira</text></navLabel> <content src="03.htm"/> </navPoint> <navPoint class="chapter" id="chapter-4" playOrder="4"> <navLabel><text>Capoeiras famosos da Bahia</text></navLabel> <content src="04.htm"/> </navPoint> <navPoint class="bibliography" id="chapter-5" playOrder="5"> <navLabel><text>Fontes consultadas</text></navLabel> <content src="05.htm"/> </navPoint> </navMap> </ncx>
O elemento navMap é responsável pela tabela de conteúdos da publicação e pode ser hierárquico, possibilitando a declaração de capítulos > seções > subseções > etc por meio da endentação de elementos navPoint.
Passo 7 - Empacotar os arquivos ePUB em formato ZIP
Para a montagem do ePUB contendo todos os arquivos da publicação, seguindo as três especificações mencionadas, é necessário realizar a compactação em formato ZIP de toda a estrutura de diretórios. Alguns eReaders exigem que o arquivo mimetype seja o primeiro arquivo da lista, porém se compactarmos toda a estrutura de diretórios em uma única vez, o arquivo mimetype não será o primeiro a ser incluído. Para fazer isso, primeiro crie um arquivo ZIP vazio, arraste somente o arquivo mimetype para dentro do arquivo ZIP, em seguida arraste os diretórios OPS e META-INF juntos para o mesmo arquivo ZIP. Por último, renomeie a extensão do arquivo para .epub.
Passo 8 - Verificar conformidade do arquivo ePUB
É possível utilizar ferramentas de validação e detecção de erros na estrutura de marcação dos arquivos gerados a partir das especificações OPS, OPF e OCF para compor o arquivo ePUB. Um exemplo de ferramenta é o epubcheck, disponível em http://code.google.com/p/epubcheck/.
Futuro do formato ePUB - versão 3.0
Os detalhes das mudanças entre a versão 2.0.1 e 3.0 do ePUB estão descritos no site do IDPF, disponível em 11.
Referências Bibliográficas
- http://idpf.org/
- http://idpf.org/epub/201
- http://idpf.org/epub/30
- http://idpf.org/epub/30/spec/epub30-overview.html
- http://en.wikipedia.org/wiki/EPUB
- http://www.hxa.name/articles/content/epub-guide_hxa7241_2007.html
- http://idpf.org/epub/20/spec/OPS_2.0.1_draft.htm
- http://idpf.org/epub/20/spec/OPF_2.0.1_draft.htm
- http://idpf.org/epub/20/spec/OCF_2.0.1_draft.doc
- http://idpf.org/epub/20/spec/OPS_2.0.1_draft.htm#Section3.0
- http://idpf.org/epub/30/spec/epub30-changes.html