EPUB FACTORY
Sobre EPUB / Fundamentos
Fundamentos

O que tem dentro de um arquivo EPUB?
descompacte e olhe a engrenagem

Um arquivo EPUB é, na verdade, um ZIP. Troque a extensão e qualquer um pode abrir e ver. Este artigo percorre o que existe de fato ali dentro quando você o desempacota e o que cada arquivo faz. Depois que você conhece a engrenagem, consegue adivinhar onde olhar quando algo não aparece.
Neste artigo
  1. Descompactar um EPUB
  2. O formato geral
  3. mimetype ── o arquivo mais estranho
  4. container.xml ── a placa de sinalização
  5. content.opf ── o coração do livro
  6. nav.xhtml ── o sumário
  7. Texto, CSS e imagens
  8. Por que construir à mão é difícil

Descompactar um EPUB

Comece fazendo. Se você tem um EPUB por perto, é só isto.

1Copie o arquivo EPUB (para não danificar o original)
2Troque a extensão de .epub para .zip
3Descompacte normalmente

É isso. Sem software especial. Um EPUB é um ZIP, então ele se desempacota sem sequer um aviso.

O contrário não funciona

Você pode pensar «se descompacta, então compactar uma pasta e renomear para .epub faz um EPUB». Não é tão simples, por causa das regras sobre como ele precisa ser comprimido descritas na próxima seção.

O formato geral

Desempacotado, geralmente fica assim.

A pasta desempacotada
├── mimetype       marca esta caixa como EPUB
├── META-INF/
│  └── container.xml  sinaliza onde está o livro em si
└── OEBPS/       a pasta que contém o livro
  ├── content.opf   dados do livro, lista de conteúdos, ordem de leitura
  ├── nav.xhtml    sumário
  ├── text/
  │  ├── p001.xhtml  o texto (um arquivo por página)
  │  └── p002.xhtml
  ├── image/
  │  └── cover.jpg   a capa e outras imagens
  └── style/
    └── book.css   aparência

OEBPS — esse nome de pasta, e como as coisas se dividem dentro dela, variam conforme a ferramenta que construiu. Pode ser item ou xhtml no lugar, e não tem problema.

O que você não pode mudar, nem de nome nem de posição, é o mimetype na frente e o META-INF/container.xml . Esses dois são fixos e todo o resto é livre — esse é o passo um para entender a estrutura.

mimetype ── o arquivo mais estranho

O conteúdo dele é uma única linha.

application/epub+zip

A função dele é declarar «este ZIP é um EPUB». Mas ele vem com regras rígidas que nenhum outro arquivo tem.

Um aplicativo de leitura consegue decidir «isto é um EPUB» lendo só os primeiros bytes do arquivo. É por isso que a posição e a forma estão fixadas.

É aqui que os EPUB feitos à mão caem primeiro

Compacte uma pasta com uma ferramenta comum e você não consegue escolher a ordem dos arquivos, e o mimetype é comprimido junto com todo o resto. O resultado: você renomeia para .epub e os aplicativos de leitura não abrem.

Atender à condição de «primeiro, sem compressão» significa rodar a compactação em duas etapas separadas. É a primeiríssima coisa que uma ferramenta de construção de EPUB faz.

container.xml ── a placa de sinalização

META-INF/container.xml tem esta cara.

<?xml version="1.0" encoding="UTF-8"?>
<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"/>
  </rootfiles>
</container>

Ele faz exatamente uma coisa: diz «os dados do livro estão em OEBPS/content.opf ».

É graças a essa placa que os nomes de pasta podem ser livres. Um aplicativo de leitura olha primeiro o META-INF/container.xml e vai para onde ele apontar.

content.opf ── o coração do livro

Este é o arquivo mais importante de um EPUB. Ele se divide em três partes.

ParteO que faz
metadataTítulo, autor, idioma — os dados do próprio livro
manifestUma lista de todos os arquivos incluídos
spineA ordem em que as páginas viram

metadata ── os dados do livro

<metadata>
  <dc:title>Alice no País das Maravilhas</dc:title>
  <dc:creator>Lewis Carroll</dc:creator>
  <dc:language>pt-BR</dc:language>
  <dc:identifier id="uid">urn:uuid:xxxxxxxx</dc:identifier>
  <meta property="dcterms:modified">2026-08-04T00:00:00Z</meta>
</metadata>

O que merece atenção é o dc:title . O que aparece na estante de um aplicativo de leitura é este valor, não o nome do arquivo. Por melhor que você tenha nomeado o arquivo, se isto estiver vazio a estante mostra «Untitled».

dc:language também importa. Ponha pt-BR para português do Brasil, ja para japonês. Sem isso, um aplicativo de leitura pode não aplicar as regras de composição do idioma — o que pesa mais no japonês.

manifest ── a lista de arquivos incluídos

<manifest>
  <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
  <item id="p001" href="text/p001.xhtml" media-type="application/xhtml+xml"/>
  <item id="css" href="style/book.css" media-type="text/css"/>
  <item id="cover" href="image/cover.jpg" media-type="image/jpeg"/>
</manifest>

Todos os arquivos do EPUB precisam ser registrados aqui. Acrescente uma imagem e esqueça de registrá-la, e só isso já é um erro. O contrário — registrada mas não presente — também é erro.

O arquivo do sumário é marcado com properties="nav" , que é como ele diz «este arquivo é o sumário».

spine ── a ordem de leitura

<spine page-progression-direction="rtl">
  <itemref idref="p001"/>
  <itemref idref="p002"/>
</spine>

manifest é a lista do que há dentro; spine é em que ordem se lê. A ordem daqui vira a ordem das páginas.

E a parte que mais importa num livro japonês é page-progression-direction .

ValorSignificadoLivros que usam
rtlAvança da direita para a esquerdaTexto vertical, mangá
ltrAvança da esquerda para a direitaTexto horizontal

Deixe isso de fora de um livro composto em vertical e as páginas viram ao contrário. É uma das primeiras coisas a conferir quando o texto vertical não funciona.

nav.xhtml ── o sumário

O EPUB 3 sempre exige o sumário como arquivo próprio. Ele parece uma lista comum de links em HTML, distinguida pela marca epub:type="toc" .

<nav epub:type="toc">
  <ol>
    <li><a href="text/p001.xhtml">Capítulo 1</a></li>
    <li><a href="text/p002.xhtml">Capítulo 2</a></li>
  </ol>
</nav>

É isto que aparece quando o leitor aperta o botão de sumário. Se falta um arquivo linkado, você tem um livro pelo qual não dá para navegar.

Você pode encontrar toc.ncx ali dentro também

No antigo EPUB 2, um arquivo chamado toc.ncx fazia o trabalho do sumário. O EPUB 3 o substituiu pelo nav.xhtml , mas alguns EPUB incluem os dois para que os aplicativos de leitura antigos continuem funcionando.

Texto, CSS e imagens

Daqui em diante é praticamente igual a uma página web.

Como você divide o texto é decisão sua, mas um arquivo grande demais deixa os aplicativos de leitura lentos, então dividir por capítulo é o normal.

Por que construir à mão é difícil

Como você viu, a estrutura de um EPUB não é complicada. Texto, imagens e instruções de design empacotados numa caixa com uma placa e uma lista — é só isso.

As regras a obedecer, porém, são chatinhas.

Se faltar um, o livro não abre ou é recusado no envio para a loja. E a causa do erro normalmente não é visível no que aparece na tela.

Por isso, na produção real, usa-se uma ferramenta que monta a estrutura a partir de um manuscrito ou de imagens. Ainda assim, ter olhado por dentro uma vez significa que você consegue adivinhar onde olhar quando algo dá errado — que é o objetivo deste artigo.

A estrutura é montada por você

O EPUB FACTORY constrói automaticamente cada parte da estrutura descrita aqui. Basta escolher uma pasta de imagens ou um manuscrito de texto. Sem cadastro e sem instalar nada.

Testar o EPUB FACTORY