EPUB 3: El Estándar Abierto para Ebooks y Publicaciones Digitales
¿Qué es EPUB 3?
EPUB 3 es la versión actual del estándar abierto de ebooks mantenido por el W3C (World Wide Web Consortium). EPUB significa Electronic Publication (Publicación Electrónica). La versión 3 (EPUB 3.3 es la especificación actual a partir de 2023) está construida sobre estándares web abiertos: HTML5, CSS3, SVG y JavaScript forman la capa de contenido, mientras que un contenedor basado en ZIP con metadatos XML proporciona el empaquetado.
Los archivos EPUB 3 usan la extensión .epub. Son el formato nativo de:
- Apple Books (iOS, macOS)
- Kobo (lectores y aplicaciones)
- Google Play Books
- Overdrive/Libby (préstamo de biblioteca pública)
- Adobe Digital Editions
- La mayoría de los lectores de código abierto (Calibre, Foliate, ReadEra)
Amazon Kindle usa sus propios formatos .mobi/.azw3/.kfx, pero tanto KindleGen como Kindle Previewer de Amazon aceptan EPUB como entrada de conversión.
Estructura de un Archivo EPUB
Un archivo EPUB 3 es un archivo ZIP con una estructura interna específica:
libro.epub (archivo ZIP)
├── mimetype ← debe ser primero; sin comprimir; "application/epub+zip"
├── META-INF/
│ └── container.xml ← apunta al documento de paquete OPF
└── EPUB/
├── content.opf ← Documento de Paquete OPF (metadatos + manifiesto + lomo)
├── nav.xhtml ← Documento de Navegación EPUB (Tabla de Contenidos)
├── css/
│ └── estilos.css ← hoja de estilos
├── imagenes/
│ └── portada.jpg ← imagen de portada
└── xhtml/
├── capitulo01.xhtml ← documentos de contenido (XHTML5 válido)
├── capitulo02.xhtml
└── capitulo03.xhtml
El Documento de Paquete OPF (content.opf)
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf"
version="3.0" unique-identifier="uid">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:identifier id="uid">urn:isbn:978-3-16-148410-0</dc:identifier>
<dc:title>El Arte del Código</dc:title>
<dc:creator id="autor">Juana García</dc:creator>
<dc:language>es</dc:language>
<dc:publisher>Libros Abiertos S.L.</dc:publisher>
<dc:date>2024-01-15</dc:date>
<meta property="dcterms:modified">2024-01-15T10:00:00Z</meta>
<meta name="cover" content="imagen-portada"/>
</metadata>
<manifest>
<item id="nav" href="nav.xhtml" media-type="application/xhtml+xml"
properties="nav"/>
<item id="imagen-portada" href="imagenes/portada.jpg" media-type="image/jpeg"
properties="cover-image"/>
<item id="css" href="css/estilos.css" media-type="text/css"/>
<item id="cap01" href="xhtml/capitulo01.xhtml" media-type="application/xhtml+xml"/>
<item id="cap02" href="xhtml/capitulo02.xhtml" media-type="application/xhtml+xml"/>
</manifest>
<spine>
<itemref idref="cap01"/>
<itemref idref="cap02"/>
</spine>
</package>
Características de EPUB 3 vs. EPUB 2
| Característica | EPUB 2 | EPUB 3 |
|---|---|---|
| Estándar de contenido | XHTML 1.1 | XHTML5 / HTML5 |
| CSS | CSS 2.1 | CSS 3 (completo) |
| Audio/Vídeo | No | Sí (<audio>, <video>) |
| JavaScript | No | Sí |
| SVG inline | No | Sí |
| MathML | No | Sí |
| Diseño fijo | No | Sí |
| Accesibilidad (ARIA) | Limitada | ARIA + WCAG 2 completos |
| Superposiciones de medios (narración sincronizada) | No | Sí (SMIL) |
| Fuentes | Limitado | WOFF/WOFF2 incrustados |
Crear EPUB 3 con Python: ebooklib
from ebooklib import epub
# Crear libro
libro = epub.EpubBook()
libro.set_identifier('arte-codigo-001')
libro.set_title('El Arte del Código')
libro.set_language('es')
libro.add_author('Juana García')
# Añadir imagen de portada
with open('portada.jpg', 'rb') as f:
libro.set_cover('imagenes/portada.jpg', f.read())
# Crear capítulos
cap1 = epub.EpubHtml(
title='Capítulo 1: Introducción',
file_name='xhtml/capitulo01.xhtml',
lang='es'
)
cap1.content = '''<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Capítulo 1</title></head>
<body>
<h1>Capítulo 1: Introducción</h1>
<p>Bienvenido al arte del código...</p>
</body>
</html>'''
libro.add_item(cap1)
# Añadir CSS
css = epub.EpubItem(
uid='estilo',
file_name='css/estilos.css',
media_type='text/css',
content='body { font-family: Georgia, serif; line-height: 1.6; }'
)
libro.add_item(css)
# Tabla de contenidos
libro.toc = (epub.Link('xhtml/capitulo01.xhtml', 'Introducción', 'cap1'),)
# Archivos de navegación
libro.add_item(epub.EpubNcx())
libro.add_item(epub.EpubNav())
# Orden de lectura (lomo)
libro.spine = ['nav', cap1]
# Escribir archivo EPUB
epub.write_epub('arte_del_codigo.epub', libro)
Conversión a/desde EPUB
# DOCX → EPUB (mediante Pandoc)
pandoc entrada.docx -o salida.epub \
--epub-cover-image=portada.jpg \
--toc
# EPUB → MOBI/AZW3 (para Kindle, mediante Calibre)
ebook-convert entrada.epub salida.mobi
# EPUB → PDF
ebook-convert entrada.epub salida.pdf
# Validar EPUB 3
epubcheck entrada.epub
Accesibilidad en EPUB 3
<!-- Metadatos de accesibilidad requeridos en OPF -->
<meta property="schema:accessMode">textual</meta>
<meta property="schema:accessMode">visual</meta>
<meta property="schema:accessibilityFeature">structuralNavigation</meta>
<meta property="schema:accessibilityFeature">alternativeText</meta>
<meta property="schema:accessibilityHazard">none</meta>
<meta property="schema:accessibilitySummary">
Esta publicación se ajusta a WCAG 2.1 nivel AA.
</meta>
Consejos Prácticos
- Ejecuta siempre EPUBCheck — la mayoría de las plataformas de publicación (Kobo, Apple Books) rechazan EPUBs que fallan la validación
- Prueba en dispositivos reales — el renderizado varía significativamente entre Kindle, Kobo, Apple Books y lectores de escritorio
- Diseño fijo vs. refluible: usa diseño fijo solo para libros infantiles o contenido muy visual — rompe el escalado de fuentes y la accesibilidad
- Incrustación de fuentes: incrusta siempre las fuentes (WOFF2); no dependas de las fuentes del sistema, que varían por dispositivo
- Dimensiones de imagen de portada: mantén 1600×2400 px (ratio 2:3) para mejor visualización en todos los dispositivos
- Calibre (gratuito, código abierto) es la mejor herramienta para edición, conversión y gestión de biblioteca EPUB en escritorio
La base de estándares web abiertos de EPUB 3, el rico soporte multimedia, el sólido marco de accesibilidad y el soporte universal en plataformas de lectura no Kindle lo convierten en el formato estándar para la publicación digital moderna.
Conversiones relacionadas
Conversiones de documento que siguen este tema: