quinta-feira, 23 de fevereiro de 2012

Oficina do eBook: Formatos digitais.

Aumentar Letra Diminuir Letra



Continuando nossas discussões técnicas sobre os e-books, hoje eu quero, falar sobre os diferentes formatos que estes podem apresentar:

TXT - Os primeiros livros digitalizados continham texto puro, a falta de formatação pode sim prejudicar a leitura, mas é inegável a leveza e possibilidade de acesso deste formato, todos os computadores tem algum aplicativo que consegue ler este tipo de arquivo.

PDF - Este é um formato de arquivo que permite uma ótima diagramação de livros, por este motivo é muito usado pela indústria gráfica para a impressão de livros, entretanto este é um formato estático já que não permite modificações por parte do leitor e isto torna o documento difícil de ler em telas pequenas.

Kindle - AZW, Mobi e PRC são basicamente o mesmo formato, a diferença é que o AZW costuma possuir DRM. O formato foi desenvolvido pela Mobipocket e posteriormente comprado pela Amazon, A base do formato é HTML e CSS, assim como o ePub, mas diferente desse as opções de tags que funcionam são limitadas.

ePub - Aqui temos o formato principal de livros digitais, este formato é aberto e serve de referência para outros formatos como o KF8 e o Ibooks. A base do formato é o HTML e o CSS, e recentemente foi lançado a versão 3.0 que permite entre outras coisa adicionar conteúdo multimídia.
O ePub nada mais é do que uma reunião de arquivos htmls junto a outros arquivos de configuração comprimidos num formato ZIP ou RAR e nomeados como ePub.
Abaixo vamos observar um pouco mais a estrutura do epub:

Ao descompactarmos um epub encontraremos dentro dele o seguinte conteúdo:

arquivo mimetype

pasta META-INF
  container.xml

pasta OEBPS
  content.opf
  toc.ncx
  style.css
  page-template.xpgt
  arquivos.html

Mimetype:
O mimetype serve apenas para dizer ao sistema operacional que o arquivo em questão trata-se de um livro digital. Ele é composto por um arquivo de texto em ASCII que contem o seguinte conteúdo:

application/epub+zip

Conteiner.xml
É o único arquivo dentro da pasta META-INF e sua função é basicamente indicar o conteúdo do epub, isso é feito indicando o arquivo content.opf


<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml">
</rootfile></rootfiles>
</container>


Content.opf
Aqui você tem uma lista de todos os arquivos do ebook como você podem observar no exemplo abaixo:


<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" version="2.0">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:identifier id="BookId" opf:scheme="UUID">urn:uuid:a0fcccf7-f48c-4e49-b60b-bf733db8b1e9</dc:identifier>
</metadata>
<manifest>
<item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml" />
<item href="Text/Section0001.xhtml" id="Section0001.xhtml" media-type="application/xhtml+xml" />
</manifest>
<spine toc="ncx">
<itemref idref="Section0001.xhtml" />
</spine>
</package>


Se vocês observarem com cuidado perceberão que o arquivo possui três partes específicas o Metadata o Manifest e o Spine.

Metadata - Aqui ficam os metadados do livro informações como autor, nome do livro, editora, isbn.
Os dados title, language e identifier são obrigatórios, abaixo uma amostra de metadados preenchidos.


<metadata xmlns:opf="http://www.idpf.org/2007/opf"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>Nome do Livro</dc:title>
<dc:creator opf:role="aut" opf:file-as="Autor">Autor</dc:creator>
<dc:publisher>Editora</dc:publisher>
<dc:date opf:event="epub-publication">data de publicação</dc:date>
<dc:identifier id="EPB-UUID">Código de Identificação do livro</dc:identifier>
<dc:language>pt-br</dc:language>
</metadata>



Manifest - aqui fica uma lista de todos os arquivos do livro com exceção do mimetype, container.xml e content.opf, cada ítem precisa receber um ID, que é uma identificação única e interna do documento.
Abaixo segue um exemplo desta parte:


<manifest>
<!-- Documentos -->
<item id="titulo" href="titulo.html" media-type="application/xhtml+xml" />
<item id="capitulo1" href="capitulo1.html" media-type="application/xhtml+xml" />
<item id="capitulo2" href="capitulo2.html" media-type="application/xhtml+xml" />

<!-- CSS Style Sheets -->
<item href="Styles/style.css" id="style.css" media-type="text/css" />

<!-- NCX -->
<item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml" />

<!-- Imagens-->
<item href="Images/A_Mao_e_a_Luva.jpg" id="A_Mao_e_a_Luva.jpg" media-type="image/jpeg" />
</manifest>


Spine - Aqui temos a "Espinha dorsal do livro", aqui fica a listagem dos  arquivos na ordem em que devem aparecer no livro, eles devem ser chamados pelas ID,s referênciadas no Manifest.


<spine toc="ncx">
<itemref idref="titulo" />
<itemref idref="capitulo1" />
<itemref idref="capitulo2" />
</spine>


toc.ncx
Toc é uma abreviação de Table of Contents, ou seja é o sumário do livro, mas aqui cabem algumas observações, você pode ter um sumário aplicado na página do livro e o arquivo NCX, a diferença é que o arquivo ncx é usado pela maioria dos leitores quando você seleciona esta opção e ele ainda é responsável por criar os navpoints que são os pontos de navegação entre os capítulos.
Já no epub 3 este arquivo já não é mais requerido já que ele usa a tag <nav> própria do html 5.
 A extrutura do Toc é a seguinte:


->head
uid — o ID do content.opf
depth — níveis do sumário >= 1
totalPageCount — to 0
maxPageNumber — to 0

->navMap
O mapa do sumário

->navPoint
id — único do arquivo
playOrder —ordem de navegação (iniciando em 1)

Abaixo segue um exemplo:

<?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 xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
<head>
<meta name="dtb:uid" content="idtest"/>
<meta name="dtb:depth" content="3"/>
<meta name="dtb:totalPageCount" content="0"/>
<meta name="dtb:maxPageNumber" content="0"/>
</head>
<docTitle>
<text>Saga do primeiro ePub</text>
</docTitle>
<docAuthor>
<text>Dani</text>
</docAuthor>
<navMap>
<navPoint id="titulo" playOrder="1">
<navLabel>
<text>Titulo</text>
</navLabel>
<content src="titulo.html"/>
</navPoint>
<navPoint id="capitulo1" playOrder="2">
<navLabel>
<text>Capitulo 1</text>
</navLabel>
<content src="capitulo1.html"/>
</navPoint>
<navPoint id="capitulo2" playOrder="2">
<navLabel>
<text>Capitulo 2</text>
</navLabel>
<content src="capitulo2.html"/>
</navPoint>
</navMap>
</ncx>


Style.css
Os arquivos css são as folhas de estilo do livro, são arquivos responsáveis por parâmetros de formatação tais como alinhamento, margem, etc.
abaixo segue um exemplo.


body{margin-left:5%;margin-right:5%;margin-top:5%;margin-bottom:5%}
.nomargin{margin:0}
h1{text-indent:0;margin-left:0;font-size:200%;font-weight:bold;text-align:center;margin-top:20%}
h2{text-indent:0;margin-left:0;font-size:130%;font-weight:bold;text-align:center;margin-top:8%}
h3{text-indent:0;margin-left:0;font-size:110%;font-weight:bold;text-align:center;margin-top:3%}
p{text-indent:3%;margin-left:0;margin-right:0; margin-top:0;margin-bottom:2%;text-align:justify;}
.center{text-indent:o;text-align:center;margin-bottom:2%;}
.separado{text-indent:3%;margin-left:0;margin-right:0; margin-top:0;margin-bottom:8%;text-align:justify;}
.pp{text-indent:3%;margin-left:0;margin-right:0; margin-top:10%;margin-bottom:2%;text-align:justify;}
.ppc{text-indent:0;margin-left:0;margin-right:0; margin-top:10%;margin-bottom:2%;text-align:center;}
.hc{text-indent:o;text-align:center;}


page-template.xpgt
Este arquivo não é uma parte essencial do documento, na verdade é um arquivo que serve apenas ao Adobe Digital Edition e é responsável por organizar colunas e outros tipos de características da exibição do livro no programa da Adobe, outros programas simplesmente ignoram este arquivo.


arquivos.html
Aqui ficam todos os arquivos de conteúdo do livros todos os capítulos, podem usar a extensão html ou xhtml.
tem a seguinte estrutura básica.


<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
/*<![CDATA[*/
p.sgc-2 {text-align: center;}
h1.sgc-1 {text-align: center;}
/*]]>*/
</style>
</head>
<body>
<h1 class="sgc-1">Título</h1>
<p class="sgc-2">&nbsp;texto do livro</p>
</body>
</html>


Como você pode observar o arquivo segue a forma básica de uma página html, a restrição fica nas tags e estilos que você pode usar.
Fora estes arquivos você ainda poderá ter imagens e fontes associadas ao livro.

Além dos formatos citados ainda existem outros como o KF8 e Ibooks, que como já foi citado são baseados em ePub 3, por fim você ainda pode achar algum formato proprietário de uma editora específica, mas esses arquivos não são relevantes para o mercado como um todo.

Recomendo ainda a leitura deste post do blog tableless que foi uma das fontes para a criação deste post.

3 comentários:

  1. Acho interessante a ideia da oficina para ensinar a trabalhar com ebook. Espero que haja um aprofundamento em algum desses arquivos, ou pelo menos uma recomendação de material para estudo.

    ResponderExcluir
  2. Pode ficar tranquilo Gustavo, que vamos aprofundar sim.

    ResponderExcluir
    Respostas
    1. é um alivio, pq tive a impressão que só por esse post não ia dar para aprender o suficiente.

      Excluir