EPUB es un formato de archivo de libro electrónico que utiliza la extensión de archivo ".epub". El término es un acrónimo de la expresión inglesa electronic publication (publicación electrónica) y a menudo se le denomina ePub. EPUB es compatible con muchos lectores de libros electrónicos y hay software compatible para la mayoría de los teléfonos inteligentes, tabletas y computadoras. EPUB es un estándar técnico publicado por el International Digital Publishing Forum (IDPF). Se convirtió en un estándar oficial del IDPF en septiembre de 2007, sustituyendo al antiguo estándar Open eBook.
El Book Industry Study Group respalda al EPUB 3 como el formato preferido para el contenido empaquetado y ha declarado que la industria mundial de la publicación de libros debería unirse en torno a un único estándar. El formato EPUB es implementado como un archivo que contiene archivos XHTML, junto con imágenes y otros archivos de apoyo. EPUB es el formato de libro electrónico basado en XML (a diferencia del PDF) más ampliamente compatible con los proveedores, es decir, es compatible con casi todos los lectores electrónicos, con la notable excepción de Kindle hasta el año 2022.
Historia Como sucesor de Open eBook Publication Structure, EPUB 2.0 fue aprobado en octubre de 2007, con una actualización de mantenimiento (2.0.1) aprobada en septiembre de 2010.
La especificación EPUB 3.0 entró en vigor en octubre de 2011, sustituida por una actualización de mantenimiento menor (3.0.1) en junio de 2014. Entre las nuevas características principales figuran la compatibilidad para un diseño preciso o un formato especializado (Fixed Layout Documents), como en el caso de los libros de historietas y la compatibilidad con MathML. En mayo de 2016, los miembros del IDPF aprobaron la incorporación al World Wide Web Consortium (W3C), "para alinear completamente la industria editorial y la tecnología básica de la Web".
La versión actual de EPUB es la 3.2, vigente a partir del 8 de mayo de 2019. Se le ha dado soporte oficial a las versiones actuales de HTML, CSS y SVG, según lo definido por el W3C.
Versión 2.0.1 El EPUB 2.0 fue aprobado en octubre de 2007, con una actualización de mantenimiento (2.0.1) destinada a aclarar y corregir las erratas en las especificaciones que se aprobaron en septiembre de 2010. La versión 2.0.1 de EPUB consta de tres especificaciones:
Open Publication Structure (OPS) 2.0.1, comprende el formato de su contenido. Open Packaging Format (OPF) 2.0.1, describe la estructura del archivo .epub en XML. Open Container Format (OCF) 2.0.1,agrupa todos los archivos como un archivo ZIP.Open Container Format (OCF) 2.0.1 – Recommended Specification. IDPF. 4 de setiembre de 2010.
EPUB utiliza internamente XHTML o DTBook (un estándar XML proporcionado por el Consorcio DAISY) para representar el texto y la estructura del documento de contenido, y un subconjunto de CSS para proporcionar el diseño y el formato. El XML se utiliza para crear el manifiesto del documento, la tabla de contenidos y los metadatos del EPUB. Por último, los archivos se agrupan en un archivo ZIP como formato de empaquetado.
Open Publication Structure 2.0.1 Un archivo EPUB utiliza XHTML 1.1 (o DTBook) para construir el contenido de un libro a partir de la versión 2.0.1. Esto es diferente de las versiones anteriores (OEBPS 1.2 y anteriores), que usaban un subconjunto de XHTML. Sin embargo, hay algunas restricciones en ciertos elementos. El tipo MIME para los documentos XHTML en el EPUB es application/xhtml+xml.
El estilo y el diseño se realizan utilizando un subconjunto de CSS 2.0, conocido como OPS Style Sheets. Esta sintaxis especializada requiere que los sistemas de lectura soporten solo una parte de las propiedades CSS y añadan algunas propiedades personalizadas. Las propiedades personalizadas incluyen oeb-page-head, oeb-page-foot y oeb-column-number. La incrustación de la fuente se puede realizar utilizando la propiedad @font-face, así como incluyendo el archivo de la fuente en el manifiesto de OPF. El tipo MIME para los documentos CSS en EPUB es text/css.
EPUB también requiere que las imágenes PNG, JPEG, GIF y SVG sean soportadas usando los tipo MIME image/png, image/jpeg, image/gif, image/svg+xml. Se permiten otros tipos de medios, pero los creadores deben incluir variantes alternativas que utilicen tipos compatibles.
Se requiere Unicode, y los productores de contenido deben usar codificación UTF-8 o UTF-16. Esto es para apoyar los libros internacionales y multilingües. Sin embargo, los sistemas de lectura no están obligados a proporcionar las fuentes necesarias para mostrar cada carácter unicode, aunque sí deben mostrar al menos un marcador de posición para los caracteres que no se pueden mostrar completamente.
Un ejemplo de la estructura de un archivo XHTML para un EPUB es como esto: <?xml version="1.0" encoding="UTF-8" ?> <!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" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> <title>Pride and Prejudice</title> <link rel="stylesheet" href="css/main.css" type="text/css" /> </head> <body> ... </body> </html>
Open Packaging Format 2.0.1 El propósito de la especificación del OPF es: "...[definir] el mecanismo por el cual se vinculan los diversos componentes de una publicación OPS y proporciona una estructura y una semántica adicionales a la publicación electrónica". Esto se logra mediante dos archivos XML con las extensiones .opf y .ncx.
Archivo .opf El archivo OPF, tradicionalmente llamado content.opf, contiene los metadatos del libro EPUB, el manifiesto del archivo y el orden de lectura lineal. Este archivo tiene un paquete de elementos raíz y cuatro elementos hijo: metadata, manifest, spine y guide. Además, el nodo package debe tener el atributo unique-identifier. El tipo MIME del archivo .opf es application/oebps-package+xml.
El elemento metadata contiene toda la información de metadatos para un archivo EPUB en particular. Se requieren tres etiquetas de metadatos (aunque hay muchas más disponibles): title, language y identifier. La etiqueta title contiene el título del libro, language contiene el lenguaje del contenido del libro en formato RFC 3066 o sus sucesores, como el más reciente RFC 4646 y identifier contiene un identificador único para el libro, como su ISBN o una URL. El atributo id delidentifier debe ser igual al atributo unique-identifier del elemento package.
El elemento manifest enumera todos los archivos contenidos en el paquete. Cada archivo está representado por un elemento item y tiene los atributos: id, href, media-type. Todos los XHTML (documentos de contenido), hojas de estilo, imágenes u otros medios, fuentes incrustadas, y el archivo NCX deben ser listados aquí. Solo el propio archivo .opf, el container.xml y los archivos mimetype no deben ser incluidos. Obsérvese que en el ejemplo que figura a continuación se da un media-type arbitrario al archivo de fuentes incluido, aunque no existe un tipo MIME para las fuentes.
El elemento spine enumera todos los documentos de contenido XHTML en su orden de lectura lineal. También se debe enumerar cualquier documento de contenido al que se pueda acceder a través de los enlaces o el índice. El atributo toc del spine debe contener el id del archivo NCX que figura en el manifiesto. El idref de cada elemento itemref se establece con el id de su respectivo documento de contenido.
El elemento guide es un elemento opcional con el propósito de identificar los componentes estructurales fundamentales del libro. Cada elemento reference tiene los atributos type, title, href. Los archivos referenciados en href deben ser listados en el manifiesto y se les permite tener un identificador de elemento (#figures en el ejemplo).
Un ejemplo de archivo OPF: <?xml version="1.0"?> <package version="2.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> <dc:title>Pride and Prejudice</dc:title> <dc:language>en</dc:language> <dc:identifier id="BookId" opf:scheme="ISBN">123456789X</dc:identifier> <dc:creator opf:file-as="Austen, Jane" opf:role="aut">Jane Austen</dc:creator> </metadata>
<manifest> <item id="chapter1" href="chapter1.xhtml" media-type="application/xhtml+xml"/> <item id="appendix" href="appendix.xhtml" media-type="application/xhtml+xml"/> <item id="stylesheet" href="style.css" media-type="text/css"/> <item id="ch1-pic" href="ch1-pic.png" media-type="image/png"/> <item id="myfont" href="css/myfont.otf" media-type="application/x-font-opentype"/> <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/> </manifest>
<spine toc="ncx"> <itemref idref="chapter1" /> <itemref idref="appendix" /> </spine>
<guide><reference type="loi" title="List Of Illustrations" href="appendix.xhtml#figures" /> </guide>
</package>
Archivo .ncx El archivo NCX (Navigation Control file for XML), tradicionalmente llamado toc.ncx, contiene el índice jerárquico del archivo EPUB. La especificación para el NCX fue desarrollada para el Digital Talking Book (DTB), es mantenida por el Consorcio DAISY, y no es parte de la especificación EPUB. El archivo NCX tiene un tipo MIME de application/x-dtbncx+xml.
Cabe destacar que los valores de los elementos docTitle, docAuthor y meta name="dtb:uid" deben coincidir con sus análogos en el archivo OPF. Además, el elemento meta name="dtb:depth" se establece igual a la profundidad del elemento navMap. Los elementos navPoint pueden anidarse para crear una tabla de contenidos jerárquica. El contenido de navLabel es el texto que aparece en el índice generado por los sistemas de lectura que utilizan el .ncx. El elemento content de navPoint apunta a un documento de contenido que figura en el manifiesto y también puede incluir un identificador de elemento (por ejemplo, #section1).
En la sección 2.4.1 de la especificación del NCX, tal como se utiliza en EPUB, se describe una serie de excepciones a la especificación del NCX. La especificación completa para el NCX se puede encontrar en la sección 8 de Specifications for the Digital Talking Book.
Un ejemplo de archivo .ncx: <?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 that conform to the relaxed constraints of OPS 2.0 -->
<meta name="dtb:uid" content="123456789X"/> <!-- same as in .opf --> <meta name="dtb:depth" content="1"/> <!-- 1 or higher --> <meta name="dtb:totalPageCount" content="0"/> <!-- must be 0 --> <meta name="dtb:maxPageNumber" content="0"/> <!-- must be 0 --> </head>
<docTitle> <text>Pride and Prejudice</text> </docTitle>
<docAuthor> <text>Austen, Jane</text> </docAuthor>
<navMap> <navPoint class="chapter" id="chapter1" playOrder="1"> <navLabel><text>Chapter 1</text></navLabel> <content src="chapter1.xhtml"/> </navPoint> </navMap>
</ncx>
Open Container Format 2.0.1 Un archivo EPUB es un grupo de archivos que se ajustan a los estándares OPS/OPF y están empaquetados en un archivo ZIP. El OCF especifica cómo organizar estos archivos en el ZIP y define dos archivos adicionales que deben ser incluidos.
El archivo mimetype debe ser un documento de texto en ASCII que contenga la cadena application/epub+zip. También debe estar descomprimido, sin cifrar y ser el primer archivo en el ZIP. Este archivo proporciona una forma más fiable para que las aplicaciones identifiquen el tipo MIME del archivo que solo la extensión .epub.