Aus Linux-Magazin 09/2011

Epub mit Open-Source-Tools erzeugen

© CSschmuck, Fotolia

Wer E-Books im verbreiteten Epub-Format erzeugen möchte, findet in der Open-Source-Werkzeugkiste reichlich Unterstützung – ob per GUI-Anwendung, Office-Erweiterung oder Kommandozeile sowie mit und ohne XML/XSLT-Kenntnisse. Als Eingabeformate eignen sich ODT, Docbook oder Latex.

Im Unterschied zu PDFs mit meist festem Seitenverhältnis passt sich das E-Book-Format Epub dem Anzeigegerät an. Der Leser kann zudem Schriftart- und -größe einstellen. Das Format verbreitet sich durch Reader-Hardware und über Content-Anbieter wie I-Tunes (Apple) oder Libreka (Deutscher Buchhandel). Wer Bücher im Epub-Format erzeugen möchte, findet im Open-Source-Bereich ein große Auswahl an Tools.

Offene Bücher

Epub ist ein offener Standard, den die IDPF (International Digital Publishing Foundation) herausgibt [1]. Einfach gesagt ist ein Epub eine Art gezippte Website: Der Text ist in XHTML-Dokumenten gespeichert, Bilder als SVG- oder Bitmap-Grafiken. Dazu kommen CSS-Regeln sowie die Beschreibung von Inhalt und Navigationsstruktur in verschiedenen XML-Formaten. Ein universelles Tool, um Epub-Bücher aus allen möglichen Eingabeformaten zu erzeugen, gibt es nicht. Der Epub-Autor kann derzeit unter einigen Programmen wählen, die jeweils ein oder einige Formate unterstützen.

Der folgende Artikel berücksichtigt als Eingabeformate ODT (Open Document Text), Docbook und Latex. Darüber hinaus beschreibt er das native Schreiben von Epub-Dokumenten mit der Anwendung Sigil. Die Qualität der erzeugten Epub lässt sich mit dem Programm Epubcheck prüfen.

Calibre

Aus ODT lassen sich Epub-Dokumente mit dem Open-Source-Tool Calibre erzeugen [2]. Die GUI-Anwendung gibt es in den Archiven vieler Linux-Distributionen, bei Ubuntu beispielsweise heißt das Paket schlicht »calibre« . Die unter GPLv3 lizenzierte Software liegt derzeit in Version 0.744 vor.

Als ersten Schritt zum Epub fügt der Anwender seine ODT-Eingabedatei der Calibre-Bibliothek hinzu. Dazu wählt er das Bücher-Symbol ganz links in der Werkzeugleiste. Dann legt er Metadaten des zu erzeugenden Buches fest, zumindest Titel und Autor (Abbildung 1). Dazu dient der Info-Button. Im sich öffnenden Dialog lässt sich auch eine Bilddatei für den Titel auswählen.

Abbildung 1: Bei der GUI-Anwendung Calibre nimmt ein Formular die Metadaten für das E-Book auf.

Abbildung 1: Bei der GUI-Anwendung Calibre nimmt ein Formular die Metadaten für das E-Book auf.

Zum Erzeugen eines Epub betätigt der Anwender den Konvertieren-Button des Calibre-Menüs. Dadurch öffnet sich ein Fenster, in dessen Registern er die Optionen für Epubs einstellt. Die Einstellmöglichkeiten sind durch ausführliche Erklärungen in Tooltips beschrieben. Im Register »Layout« gibt der Benutzer eine Ausgangsschriftgröße an. Calibre ordnet sie der Basisschriftgröße des Eingabedokuments zu.

Alle weiteren Fontgrößen des Eingabedokuments verteilt die Software auf einen Schriftgrößenschlüssel, der sich manuell anpassen lässt. Die minimale Zeilenhöhe bezieht sich prozentual auf die Basisschriftgröße. Das Programm wartet zudem mit Optionen zur Textoptimierung auf: So lassen sich etwa Anführungszeichen nach typografischen Gesichtspunkten korrigieren. Das Feld »Extra CSS« nimmt zusätzliche CSS-Regeln auf.

Im Register »Heuristische Verarbeitung« stehen einige Korrekturverfahren zur Auswahl, die etwa stehen gebliebene Worttrennungen entfernen, sofern das Wort auch einmal ungetrennt im Text vorkommt. Daneben kann der Benutzer Seitenränder einstellen und durch Auswahl eines Ausgabeprofils das Epub für bestimmte Lesegeräte optimieren. Die generischen Voreinstellungen schlagen den goldenen Mittelweg ein.

Xpath gliedert

Mit Xpath-Ausdrücken kann der Calibre-Anwender Kapitel festlegen, dem Dokument Seitenumbrüche hinzufügen sowie eine Gliederung erzeugen (Abbildung 2). Dazu wählen diese Ausdrücke Teile aus einem XML-Dokument aus, etwa die Menge aller Kapitelüberschriften.

Abbildung 2: Xpath-Ausdrücke helfen beim nachträglichen Strukturieren eines in Calibre importierten ODT-Dokuments.

Abbildung 2: Xpath-Ausdrücke helfen beim nachträglichen Strukturieren eines in Calibre importierten ODT-Dokuments.

Wichtig zu wissen: Die Ausdrücke wendet Calibre auf das fertige XHTML-Dokument im Epub an. Um eine Übersicht zu bekommen, empfiehlt es sich also, das erzeugte Epub mit dem in Calibre eingebauten Leseprogramm zu öffnen und die gesuchten Textelemente zu inspizieren (»Prüfen« im Kontextmenü).

So kann der Autor mit Hilfe von Xpath-Ausdrücken Gliederungsebenen definieren. Der Xpath-Ausdruck »//*« passt auf alle Elemente eines XML-Dokuments. Ein Prädikat schränkt die Menge ein, etwa durch den Namen eines Elements oder den Wert eines Attributs. So eignet sich etwa »//*[@class=’P-Title’]« für den Buchtitel, »//*[name()=’h1′]« für Kapitel und »//*[name()=’h2′]« für Überschriften. Das Calibre-Handbuch enthält ein kleines Xpath-Tutorial [3].

Unter dem Punkt »Suchen&Ersetzen« kann der Anwender außerdem Textstellen mittels Regular Expressions ersetzen. Die Ausdrücke, etwa zur Korrektur von Schreibungen, testet er anhand einer Quellcode-Vorschau.

Beim Erzeugen von Epubs endet der Funktionsumfang von Calibre aber längst nicht. Die Software versteht sich auch als Anwendung, die E-Book-Sammlungen in den verschiedensten Formaten verwaltet. Daneben kann das Programm Inhalte aus dem Web herunterladen und in Buchform packen.

Writer2epub

Anwender von Libre und Open Office können Epub-Dokumente auch direkt aus der Textverarbeitung Writer exportieren. Dazu installieren sie die GPL-lizenzierte Erweiterung Writer2epub, derzeit ist Version 1.1.11 aktuell [4]. Nach Installation und einem Neustart der Büro-Anwendung finden sich in der Writer-Werkzeugleiste drei zusätzliche Knöpfe (Abbildung 3). Damit kann der Benutzer aus dem geöffneten Dokument ein Epub-Buch erzeugen, Epub-Metadaten eingeben oder Optionen einstellen. Daneben bietet Writer2epub an, ein Umschlagbild einzusetzen, das Einbinden von Schriftarten ist ebenfalls vorgesehen. Bei der Standardkonformität des erzeugten XHTML zeigt die Extension dagegen noch Schwächen.

Abbildung 3: Zusätzliche Menüpunkte der Erweiterung Writer2epub in Libre Office Writer.

Abbildung 3: Zusätzliche Menüpunkte der Erweiterung Writer2epub in Libre Office Writer.

Mit Writer2epub verwendet ein E-Book-Autor die freie Textverarbeitung als eine Art Wysiwyg-Editor. Das ist allerdings dem Arbeitsstil des Verfassers und der Qualität des entstehenden Epub-Dokuments nicht besonders zuträglich, da keine strikte Trennung zwischen inhaltlicher Struktur und Darstellung erfolgt. Das als Nächstes vorgestellte Verfahren setzt hierbei andere Maßstäbe.

Dbtoepub

Autoren technischer Dokumente verwenden häufig Docbook als Quellformat, das sich mit Hilfe der freien Stylesheet-Sammlung Docbook XSL [5] in eine Vielzahl von Formaten transformieren lässt. Das mitgelieferte Kommandozeilen-Tool »dbtoepub« wendet das Epub-Modul aus Docbook XSL auf Eingabedateien an und packt die Ergebnisse gemäß Standard in ein Zip-Archiv mit der Datei-Endung ».epub« . Der Aufruf des Tools verweist mittels »–stylesheet« auf die gewünschte XSL-Datei (Listing 1).

Listing 1

Epub mit dbtoepub erzeugen

01 $ dbtoepub --output probe-db5.epub --stylesheet /usr/share/xml/docbook/stylesheet/docbook-xsl/epub/docbook.xsl probe-db5.xml

Mit Dbtoepub lassen sich eigene CSS-Regeln und Schriftarten ins Zieldokument einbinden. Der Epub-Standard verlangt nach Möglichkeit Open-Type-Fonts (OTF). Hier bietet sich eine Open-Source-Schriftfamilie wie Linux Libertine an [6]. Das Einbinden der Schriftarten in das XHTML-Dokument erfolgt über CSS-Regeln in der Datei »styles.css« (Listing 2). Der Anwender kann auch mehrere Schriftartdateien einbinden. Dazu wiederholt er den Kommandozeilenschalter »–font« (Listing 3) und setzt zusätzliche CSS-Regeln in »styles.css« .

Listing 3

Schriftart einbinden

01 $ dbtoepub --output probe-db5.epub --font linlib/LinLibertine_DR.otf --css styles.css --stylesheet /usr/share/xml/docbook/stylesheet/docbook-xsl/epub/docbook.xsl probe-db5.xml

Listing 2

styles.css

01 body {
02 font-family: Libertine;
03 /* font-weight, font-style
04 normal als Default */
05 }
06 @font-face {
07 font-family: Libertine;
08 font-weight: normal;
09 font-style: normal;
10 src: url(LinLibertine_DR.otf)
11 }

Die Epub-Erzeugung mittels Docbook XSL lässt sich durch einen so genannten Customization Layer anpassen. Dazu erstellt der Anwender ein XSL-Stylesheet, das zunächst das vorgefertigte Stylesheet für die Erzeugung von Epubs einbindet und dann Teile darin überschreibt. Wie das geht, zeigt exemplarisch Listing 4, das den Parameter »epub.cover.linear« auf 1 setzt, um das Umschlagbild am Anfang statt am Ende des generierten Epub sichtbar zu machen.

Listing 4

Customization Layer

01 <?xml version='1.0'?>
02 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
03 <xsl:import href="/usr/share/xml/docbook/stylesheet/docbook-xsl/epub/docbook.xsl"/>
04 <xsl:param name="epub.cover.linear" select="1" />
05 </xsl:stylesheet>

Ein Verweis auf eine Bilddatei für das Umschlagbild sieht in einem Docbook-5-Dokument so aus, wie in Listing 5 zu sehen. Erfahrungsgemäß füllt sich eine derartige XSL-Zwischenschicht im Laufe der Zeit mit einer Vielzahl maßgeschneiderter Änderungen, denn das Studium von Docbook XSL verleitet dazu, eigene Ausgabefilter zu entwickeln.

Listing 5

Umschlagbild in Docbook auszeichnen

01 <?xml version="1.0" encoding="UTF-8"?>
02 <book version="5.0" xmlns="http://docbook.org/ns/docbook">
03 <info>
04 <title>Epub mit dbtoepub</title>
05 <cover>
06 <mediaobject>
07 <imageobject>
08 <imagedata fileref="images/umschlag-docbook.png"></imagedata>
09 </imageobject>
10 </mediaobject>
11 </cover>
12 </info>
13 ...

Pandoc

Auch die Makro-Satzsprache Latex kann als Eingabeformat für Epub-Dokumente dienen. Das Umwandeln erledigt das Kommandozeilen-Programm Pandoc [7]. Das GPLv2-lizenzierte Tool erzeugt eine Vielzahl von Formaten, neben Epub auch ODT, HTML und Docbook. Zurzeit liegt der Konverter in Version 1.8.11 vor.

Existiert kein passendes Distributionspaket für Pandoc, lässt sich die Software mit dem Haskell-Tool »cabal-install« installieren. Cabal ist in einer Reihe von Linux-Distributionen vorhanden, so in Debian, Ubuntu oder Fedora. Da die Abhängigkeiten zwischen dem Binärpaket von Cabal bei Ubuntu nicht vollständig definiert sind, installiert der Benutzer in Listing 6 zunächst die benötigten Headerdateien der Bibliothek Zlibg.

Listing 6

Pandoc installieren

01 $ apt-get install zlibg-dev
02 $ apt-get install cabal-install
03 $ cabal update
04 $ cabal install cabal-install
05 $ cabal install pandoc

Da diese Methode Pandoc im Cabal-Verzeichnis des Benutzers installiert, sollte er seinen Pfad mit »PATH=$PATH:~/.cabal/bin« ergänzen. Das folgende Kommando erzeugt aus einer Latex-Datei ein Epub-Buch:

$ pandoc --from latex --to epub--output probe-latex.epub probe-latex.tex

Pandoc bietet viele Kommandozeilen-Schalter. Auch mit diesem Programm lassen sich CSS-Regeln und Metadaten in Epubs einbinden, Inhaltsverzeichnisse erzeugen oder mit der Option »–smart« typografische Korrekturen durchführen. Listing 7 zeigt einige der Schalter.

Listing 7

Pandoc-Optionen

01 $ pandoc --from latex --to epub --toc --smart --epub-stylesheet style.css --output probe-latex.epub --epub-metadata meta-pandoc probe-latex.tex

Sigil

Wer E-Books nicht aus anderen Formaten konvertieren, sondern gleich nach der Epub-Spezifikation schreiben möchte, greift zu Sigil [8]. Die GPLv3-Anwendung dient als Wysiwyg-Editor für E-Books. Der Clou: Sigil erzeugt die notwendigen Steuerdateien automatisch, sie lassen sich aber von Hand nachbearbeiten. Bei der Arbeit mit dem Wysiwyg-Eingabebereich wählt der Verfasser Formatvorlagen wie etwa »Heading 1« aus dem Drop-down-Menü der Werkzeugleiste. Daneben steht dem Benutzer ein Quelltext-Editor zur Verfügung. Aktuell ist derzeit die Sigil-Version 0.4.0.

Sigil macht es einfach, Bilder in den Text einzufügen. Dies geschieht über den Button mit dem Bild-Symbol in der Werkzeugleiste. Das ausgewählte Bild wird dadurch ins Epub kopiert und im Wysiwyg-Editor angezeigt. Zusätzliche Formatangaben für das XHTML-Dokument fügt der Anwender durch Angabe von CSS-Regeln hinzu. Dazu erzeugt er zunächst eine leere Stylesheet-Datei im Ordner »Styles« durch Auswahl aus dem Kontextmenü. Nun kann er das Stylesheet in einem Tab öffnen und CSS-Regeln wie in Listing 8 angeben.

Listing 8

CSS-Angaben

01 body { font-size: 9px }
02 h1 { text-align: center }
03 img { display: block}

Diese Angaben beziehen sich alle auf XHTML-Elemente. Die erste Regel legt die Schriftgröße im Dokumentkörper »body« fest. Überschriften der ersten Kategorie »h1« setzt die Regel zentriert. Das Bild-Element »img« stellt die CSS-Datei stets als Block dar, das heißt allein und in einen Bereich vom linken bis zum rechten Rand des Anzeigebereichs eingepasst. Die Verknüpfung der CSS-Regeln mit dem XHTML-Dokument erreicht der Autor durch folgende Angabe im Kopf-Bereich des XHTML-Dokuments:

<link href="../Styles/Style0001.css" rel="stylesheet" type="text/css" />

Die Baumstruktur des Auswahlmenüs auf der linken Seite entspricht der Verzeichnisstruktur innerhalb der Epub-Datei (Abbildung 4). Pfadangaben sind dabei immer relativ, im Falle des XHTML-Dokuments relativ zur XHTML-Datei im Verzeichnis »Text« .

Abbildung 4: Geteilte Ansicht im Programm Sigil: oben Wysiwyg-, unten Quellcode-Editor, links Verzeichnisstruktur.

Abbildung 4: Geteilte Ansicht im Programm Sigil: oben Wysiwyg-, unten Quellcode-Editor, links Verzeichnisstruktur.

Einige Meta-Angaben zum Dokument wie etwa den Titel fügt der Autor mit dem »Meta Editor« aus dem Menü »Tools« hinzu. Weitere Meta-Angaben muss er innerhalb des Elements »meta« in der Datei »content.opf« händisch eintragen. Epub unterstützt die Meta-Angaben des Dublin Core, was am Namespace-Präfix »dc:« vor den Elementnamen erkennbar ist (Listing 9). Den eindeutigen Bezeichner für das Epub generiert Sigil automatisch.

Listing 9

Metadaten für Epub

01 <dc:indentifier>978-456-987-12</dc:identifier>
02 <meta name="price" content="EUR 19.99"/>

Das Programm eignet sich auch dazu, bestehende Epubs zu bearbeiten. So kann der Benutzer Schriftsätze nachträglich einbetten, indem er Schriftartendateien per Kontextmenü hinzufügt und die entsprechenden CSS-Regeln einträgt.

Epubcheck

Das Kommandozeilen-Programm Epubcheck [9] prüft die Qualität von Epub-Dokumenten und hilft bei der Fehlersuche. Es steht unter BSD-Lizenz und ist derzeit in Version 1.2 erhältlich. Das Tool bemängelt in einem Epub-Buch etwa fehlende Meta-Angaben in der Komponente »content.opf« . Daneben entdeckt es in den XHTML-Dokumenten unter Umständen unerlaubte Elemente. Video- und Script-Tags sind beispielsweise erst in der kommenden Version 3 der Epub-Spzifikation gestattet.

Die Überprüfung des fertigen E-Books mit Epubcheck empfiehlt sich vor jeder Veröffentlichung. Ein mit »unzip Dateiname.epub« ausgepacktes Epub lässt sich nach Korrekturen übrigens »zip -Xr9D Dateiname.epub *« wieder einpacken.

Ausblick

Die Open-Source-Welt hat einige Programme zu bieten, die E-Books im Epub-Format erzeugen. Dabei eignet sich eine Vielzahl an Formaten für die Eingabe. Mit Hilfe von Sigil kann der Anwender außerdem Epubs nachbessern und die Möglichkeiten des Epub-Standards ausschöpfen. Außen vor bleibt jedoch bei allen Tools die digitale Verschlüsselung des Epub für das Digital Rights Management (DRM).

Die im Artikel beschriebenen Epub-Eigenschaften bleiben auch in der kommenden Version 3 der Spezifikation erhalten [10]. Die neue erlaubt zusätzlich Videos, ermöglicht Javascript, WOFF-Schriften, Math ML sowie SVG-Dokumente. Epub 3 verwendet zudem Epub Navigation Documents statt des jetzt üblichen Formats NCX sowie die XML-Variante von HTML 5 statt XHTML sowie XML 1.0 anstelle von XML 1.1. (mhu)

Online PLUS

Ein Screencast unter https://www.linux-magazin.de/plus/2011/09 zeigt Ihnen, wie Sie mit Sigil Epubs erzeugen.

Der Autor

Dipl.-Phys. Andreas Möller beschäftigt sich seit zehn Jahren mit der Entwicklung Internet-basierter Software. Dazu zählen Datenbank- und Webanwendungen sowie Arbeiten auf dem Gebiet des Single Source Publishing. Er ist unter http://www.pamoeller.com im Web zu finden.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben