EPUB (auch ePUB, Akronym für electronic publication) ist ein offener Standard für E-Books vom International Digital Publishing Forum (IDPF), der den älteren Standard Open eBook (OEB beziehungsweise Open eBook Publication Structure, OEBPS) ersetzt.
Optional können DRM-Mechanismen integriert werden. Das Format definiert aber keine Implementierung, sondern überlässt das den jeweiligen Darstellungsprogrammen. Annotationen wie Notizen, Lesezeichen etc. sind nicht Teil des Standards. Mit Version 3 ist es möglich, buchstabengenau auf eine Textstelle zu verweisen.
Auf EPUB basierende E-Books erlauben eine dynamische Anpassung des Textes an die jeweilige Bildschirmgröße des Lesers und eignen sich damit insbesondere für die Ausgabe auf Handheld-Geräten. Im Gegensatz dazu wird beispielsweise der Text bei PDF genau wie im gedruckten Buch formatiert angezeigt.
Format Der EPUB-Standard basiert auf einer Anzahl freier Standards. In Version 2 sind das hauptsächlich XML, XHTML, DTBook, SVG, CSS, NCX (aus DTBook, DAISY), Dublin Core und Zip. Ferner ist die Interpretation folgender (pixelbasierter) Rastergrafikformate erforderlich: PNG, JPEG/JFIF, GIF. In Version 3 entfällt einerseits DTBook, dafür kommen weitere Formate, etwa für Audio und optional für Video hinzu (deren Implementierung teilweise Lizenzen benötigt), ebenso Formate für Schriftarten in den Formaten OpenType und WOFF, in Version 3.1 und 3.2 zusätzlich noch TrueType.
Die Spezifikation von EPUB in der Version 2 gliedert sich in drei Teile, die unterschiedliche Bereiche definieren: Die Struktur der eigentlichen Inhalte Das Paketformat Die Struktur des Archivs
Hinzu kommen in Version 3 noch: Medienüberlagerungen (für eine alternative Präsentation als Hörbuch) Kanonische Fragmentidentifizierer (für Verweise auf beliebige Stellen in einem Buch)
Ab Version 3.0.1 kann zudem festgelegt werden, ob die Präsentation seitenbasiert oder rollbar sein soll. Zudem kann festgelegt werden, wie sich der Inhalt an den verfügbaren Platz anpasst – entweder ähnlich wie bei SVG durch Festlegung eines Darstellungsbereiches und gegebenenfalls anschließender Skalierung (fixiert) oder ähnlich wie bei XHTML durch automatische Aufteilung des Inhaltes auf den verfügbaren Platz ohne Skalierung (nicht fixiert).
Open Publication Structure Die für die eigentlichen Inhalte zu verwendenden Formate werden durch die Open Publication Structure (OPS) geregelt. Die erlaubten Inhaltsdokumente werden in Version 3 in EPUB Content Documents behandelt. Alle verwendbaren Formate sind in Version 3 in EPUB Publications festgelegt, siehe nächster Abschnitt.
EPUB unterscheidet hier prinzipiell zwischen den eigentlichen Inhaltsdokumenten und weiteren Dokumenten in anderen Formaten, die in diese eingebettet werden können, also immer inhaltlich von Inhaltsdokumenten abhängig sind und nicht selbständig auftreten.
Dokumente werden in einer oder mehreren UTF-8- oder UTF-16-codierten Dateien gespeichert.
In der Version 2.0/2.0.1 werden Inhaltsdokumente mit jeweils einer Untermenge von XHTML 1.1 oder mit DTBook realisiert, wobei bei gängigen Darstellungsprogrammen eine Interpretation von DTBook gewöhnlich nicht implementiert ist. SVG 1.1 (ohne Interaktivität oder Animation) kann entweder als Dateninsel in XHTML-Dokumenten verwendet werden oder es wird als Bild oder Objekt eingebettet. Stilvorlagen können in einer Untermenge des Formates CSS 2.0 verwendet werden. Hinzu kommen wenige für EPUB spezifische Stilvorlagen-Eigenschaften. Skript-Anwendungen sind nicht erlaubt.
In der Version 3.0/3.0.1 werden Inhaltsdokumente entweder mit der XML-Variante von HTML5 realisiert oder mit SVG 1.1 (ohne Interaktivität oder Animation). Hinsichtlich HTML5 ist nicht definiert, welchem Arbeitsentwurf Autoren folgen sollen, noch wie angegeben wird, welcher Arbeitsentwurf in einem Buch verwendet wird. Wie in HTML5 beschrieben und eingeschränkt, kann zudem auch Präsentations-MathML als Dateninsel verwendet werden. Stilvorlagen beziehen sich hier hauptsächlich auf CSS 2.1 und einige Module von CSS 3.0. Skript-Anwendungen sind optional, die Dokumente sind jeweils so zu gestalten, dass der Inhalt mit und ohne Interpretation von Skripten zugänglich ist. Eine kleine Untermenge des Formates SMIL kann zudem verwendet werden, um eine Medienüberlagerung zu realisieren. Bei dieser werden Audio-Dateien mit dem Inhalt verknüpft, um eine Präsentation auch als Hörbuch anbieten zu können.
In Version 3.1 wird ausdrücklich darauf hingewiesen, dass diese Version sich nicht auf eine spezielle Version von XHTML, SVG oder CSS festlegt, Autoren und Programmierer von Darstellungsprogrammen sollen sich an den aktuellen Empfehlungen des W3C orientieren. Damit ist die Spezifikation von EPUB unabhängig von den Spezifikationen der genutzten Webstandards. Bei SVG wird folglich zudem auch nicht mehr die Verwendung von Interaktivität oder Animation ausgeschlossen, es gibt lediglich einen allgemeineren Hinweis auf mögliche Implementierungslücken bei diversen Modulen bei den Darstellungsprogrammen.
Weil Version 3.1 einige Inkompatibilitäten zur früheren Versionen aufweist, wird von der zuständigen Arbeitsgruppe dazu geraten, stattdessen gleich die überarbeitete Version 3.2 zu verwenden. Diese lehnt sich stärker an 3.0.1 an, erklärt zudem einige faktisch nicht implementierte Möglichkeiten von 3.0.1 als veraltet, übernimmt von 3.1 allerdings die erweiterten Möglichkeiten hinsichtlich des Inhaltes durch neue Versionen von SVG und HTML5.
Open Packaging Format Die Strukturierung wird durch das Open Packaging Format (OPF) geregelt, das in Version 3 als EPUB Publications vorliegt.
Die Struktur und die Aufnahme von Metadaten beschreibt eine Stammdatei (Dateinamenserweiterung: .opf).
Darin werden im ersten Abschnitt, im Element metadata, die Metadaten hauptsächlich nach dem Dublin-Core-Schema bereitgestellt. Die Art der Notation ist im Detail für Version 3 anders als für Version 2, was Probleme für Leser bedeuten kann, wenn sie mit älteren Programmen auf solche Information direkt zugreifen möchten, statt das Buch-Archiv zu entpacken und direkt in den Quelltext der OPF-Datei zu gucken. Die gleiche Information, die bei einem Buch nach Version 2 also noch zugänglich sein kann, kann mit einer Notation gemäß Version 3 unzugänglich werden und umgekehrt bei Programmen, die nur Version 3 interpretieren und nicht mehr die Notation von Version 2.
In einem zweiten Abschnitt, im Element manifest, werden alle weiteren im Archiv gespeicherten Dateien aufgelistet.
Der weitere Abschnitt, durch das Element spine repräsentiert, ist etwas, was bei gedruckten Büchern dem Buchrücken entspricht, die Struktur dient primär dazu, die Lesereihenfolge des Buches für das Darstellungsprogramm festzulegen. Prinzipiell unterschieden wird dabei zwischen Bestandteilen eines Buches, welche in einer linearen Lesereihenfolge stehen, und solchen, die dies nicht tun. Entsprechend kann dies bei jedem Eintrag eines Inhaltsdokumentes angegeben werden. Insbesondere die Versionen 2 und 3.0.1 verlangen ferner, dass alle Inhaltsdokumente, auf die von Dokumenten verwiesen wird, welche im spine stehen, selbst in diesem Verzeichnis stehen. Praktisch kann das Probleme für Bücher verursachen, deren Struktur ganz oder teilweise keiner einfachen, linearen Lesereihenfolge folgt und die stattdessen eine eigene, eingebaute Navigation bereitstellen, bei welcher man also etwa zu Alternativen verzweigen kann oder bei welcher es wie in einem Netzwerk oder Labyrinth prinzipiell keine bestimmte Lesereihenfolge gibt. Derartige Inhaltsstrukturen waren schon bei gedruckten Büchern problematisch, sind aber eigentlich für eine digitale Repräsentation kein technisches Problem mehr.
Die praktischen Probleme für EPUB-Bücher ergeben sich daraus, dass viele gängige Darstellungsprogramme die Angabe ignorieren, dass Inhaltsdokumente nicht in einer linearen Lesereihenfolge erscheinen sollen, die Dokumente werden dann in der Reihenfolge angezeigt, wie sie im spine notiert sind oder im Anschluss an die als linear gekennzeichneten Inhalte. Dies ist ein explizit erlaubtes Vorgehen. Dies erschwert es Autoren nichtlinearer Werke praktisch, in diesem Format sinnvoll zu veröffentlichen (es könnten etwa als improvisierte Gegenmaßnahme viele inhaltsleere Inhaltsdokumente vor und nach einem nicht linearen Dokumenten in das spine eingefügt werden, um dem Leser nahezulegen, nicht die vom Programm vorgeschlagene Reihenfolge zu nutzen, sondern die dem jeweiligen Buch eigenen Navigationsmittel zu verwenden).
Mit dem Attribut toc beim Element spine wird auf ein Inhaltsverzeichnis für menschliche Leser des Buches verwiesen. Mit einem weiteren optionalen Abschnitt können besondere Strukturen des Buches wie die Titelseite, Inhaltsverzeichnis, Index, Glossar etc. angegeben werden.
Das für menschliche Leser gedachte Inhaltsverzeichnis, welches außerhalb der normalen Lesereihenfolge dargestellt wird, wird in Version 2.0/2.0.1 im Abschnitt navMap in einer Datei, typisch mit der Dateinamenserweiterung .ncx in dem XML-Format NCX angegeben, das DTBook entstammt. Jedem Eintrag wird im Attribut playOrder eine Position innerhalb der Reihenfolge der wiederzugebenden Texte zugeordnet.
Ein solches Dokument ist seit Version 3.0/3.0.1 optional und nur als Hilfe für alte Darstellungsprogramme der Versionen 2 gedacht. In Version 3.1 ist das NCX-Dokument als veraltet oder überholt gekennzeichnet. Darstellungsprogramme der Versionen 3 sollen es nicht mehr interpretieren. Dafür ist in diesen Versionen das Inhaltsverzeichnis in einem Dokument anzugeben, welches mit einer Untermenge der XML-Variante von HTML5 zu realisieren ist und damit auch innerhalb der normalen Lesereihenfolge verfügbar gemacht werden kann.
OEBPS Container Format Die Verpackung aller Teildateien in eine einzelne Datei und die Struktur des darin enthaltenen Dateisystems wird durch das OEBPS Container Format (OCF) geregelt, das in Version 3 als EPUB Open Container Format (OCF) vorliegt. Sämtliche Teildateien werden in einer Zip-Archivdatei mit der Dateinamenserweiterung .epub zusammengefasst. Darin müssen mindestens enthalten sein: eine unkomprimierte Datei mit dem Namen mimetype und dem Inhalt application/epub+zip im Wurzelverzeichnis als erste Datei im Archiv, ein Verzeichnis META-INF mit einer Datei namens container.xml, die auf die Stammdatei der Publikation verweist, die Stammdatei, ein Inhaltsverzeichnis zur Navigation durch die Publikation und mindestens eine Inhaltsdatei.
Beispiele Das Dateisystem in einem minimalen Buch gemäß EPUB 2 könnte so aussehen: mimetype META-INF/ container.xml inhalt.opf inhalt.ncx inhalt.xhtml
Das Dateisystem für EPUB 3 kann ähnlich aussehen, allerdings gibt es für die Navigation eine andere Datei (hier nav.xhtml genannt) im Format XHTML, die Datei inhalt.ncx ist hier optional, für alte Darstellungsprogramme aber sinnvoll: mimetype META-INF/ container.xml inhalt.opf inhalt.ncx nav.xhtml inhalt.xhtml
container.xml <?xml version="1.0" encoding="UTF-8"?> <container xmlns="urn:oasis:names:tc:opendocument:xmlns:container" version="1.0"> <rootfiles> <rootfile full-path="inhalt.opf" media-type="application/oebps-package+xml"/> </rootfiles> </container>
Stammdatei inhalt.opf (Version 2) <?xml version="1.0" encoding="UTF-8"?> <package version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId"> <metadata> <!-- Die folgende Buchidentifikation ist einzigartig für jedes Buch zu wählen --> <dc:identifier id="BookId" opf:scheme="UUID">6f2e78a1-c4f3-4895-b58b-347f92fb2d14</dc:identifier> <!-- Hauptsprache des Buches --> <dc:language>de</dc:language> <!-- Buchtitel --> <dc:title xml:lang="de">Hallo Welt</dc:title>
<!-- bis hier notwendige Metainformationen, es folgen einige optionale: -->
<!-- Beschreibung --> <dc:description xml:lang="de">Beispiel für ein Buch im Format EPUB 2.</dc:description>