webPUBi erschließt allen HTML-Browsern auf einfache Weise die Inhalte von ePUB-Dateien. Der Trick ist, dass ein minimalistischer Web-Server die Anfragen der HTML-Browser entgegen nimmt, die passenden Daten aus den ePUB-Dateien rausholt, bei Bedarf ein klein wenig anpasst und den Bowsern als HTML-, Jpg- oder Png-Dateien ausliefert.
So kann, wer will, z. B. mit dem Smart-TV oder jedem anderen netzwerkfähigem Gerät, auf dem ein HTML-Browser läuft, seine ePUBs lesen. Download webPUBi.zip.
Zur Steuerung der Seiten stehen die normalen Navigationsmöglichkeiten des Browsers zur Verfügung (z. B. Seite rauf/runter) wie auch einige Zusatzfunktionen, die webPUBi per JavaScript in die ePUB-Seiten integriert.
Tastaturbefehle: | |
Textgröße ändern: | Strg +/– |
Kapitelanfang/-ende: | Pos1/Ende |
Menü öffnen/schließen: | Taste M |
Ein paar Zeilen scrollen: | Pfeil rauf/runter |
Eine Seite scrollen: | Bild rauf/runter |
Voriges/nächstes Kapitel: | Pfeil links/rechts |
Die Einrichtung ist einfach:
Nach dem Start zeigt webPUBi die IP-Adresse, unter der es von anderen Geräten aus erreichbar ist, in der Titelzeile an.
Die korrekte Adressierung im Browser ist dann z. B.
http://192.168.0.10
Im einfachsten Fall kann webPUBi mit einem Doppelklick gestartet werden. Es gibt aber auch ein paar Konfigurationsmöglichkeiten.
Die eckigen Klammer [ und ] kennzeichnen optionale Parameter.
webPUBi [-port num] [-booksroot dir] [-noonload] [-help]
webPUBi -port 81
Wenn webPUBi.exe beim Start bereits bei den ePUB-Dateien liegt, ist das booksroot-Verzeichnis automatisch richtig eingestellt. Wenn webPUBi.exe nicht aus dem ePUBs-Verzeichnis gestartet wird, muss man webPUBi das booksroot-Verzeichnis per Parameter mitteilen.
Das geht z. B. indem man eine Verknüpfung anlegt (Kontextmenü
> neu > Verknüpfung) oder eine Bat-Datei ertellt.
Beispiel: webPUBi -booksroot c:\eBook\
Hinweis: Wenn der Pfad Leerstellen enthält, muss
er in Anführungszeichen eingefasst werden.
Beispiel: webPUBi -booksroot "c:\Dokumente und Einstellungen\Standard\Eigene Dateien\Eigene Bücher\"
Die Kapitel können über das normale (automatisch für jedes ePUB
erzeugte) Inhaltsverzeichnis erreicht werden. Da ohne JavaScript
das Weiterschalten zum nächsten Kapitel nicht funktioniert, kann
man z. B. das Kontextmenü der Web-Browsers öffnen, dort
Zurück auswählen und dann zum nächsten Kapitel
surfen.
Im booksroot-Verzeichis sollte eine Datei namens index.htm liegen. Natürlich kann man die Links auch direkt in das Browser-Adressfeld eintippen, wenn die korrekten Links in index.htm stehen, ist das aber bequemer.
Angenommen es gibt zwei ePUB-Dateien.
Buch A von Autor Soundso.epub und
Buch B von Autor Dingsda.epub
Dann sieht die Datei index.htm mit den Links zu den
Büchern im einfachsten Fall so aus:
<html><body>
<p><a href="Buch A von Autor Soundso.epub/">
Buch A von Soundso </a>
<p><a href="Buch B von Autor Dingsda.epub/">
Buch B von Dingsda </a>
</body></html>
Wichtig ist der abschließende Querstrich (Slash in Rot) am Ende der Linkadresse. Der Querstrich ist notwendig, damit der HTML-Browser die ePUB-Dateien wie Verzeichnisse behandelt. In der Folge wird er alle internen Links im E-Book z. B. zu Grafiken richtig adressieren.
Tipp: HTML-Links können mit einer "Zugriffstaste"
(engl. accesskey) versehen werden. Beispiel:
<a accesskey="g" href="#jumpG" name="jumpG">Autoren G</a>
Dann wird der Link vom Browser angesprungen, wenn man die Alt-Tastenkombination
drückt.
IE: | Alt + g dann ↵ | Focus auf Autoren G, mit Return ausführen |
Firefox: | Shift + Alt + g | sofort zu g (jumpG) springen |
Safari: | Strg + Alt + g | sofort zu g (jumpG) springen |
Chrome: | Alt + g | sofort zu g (jumpG) springen |
Manche Tastenkombinationen können auch vom Browser benutzt sein und funktionieren dann nicht wie gewünscht. Testen. | ||
webPUBi liest nur ePUBs ohne DRM.
Wer selbst an ePUBs bastelt, wird es vielleicht ganz nützlich finden, dass webPUBi auch mit Verzeichnis-ePUBs arbeitet.
Verzeichnis-ePUBs können z. B. einfach durch entzippen von ePUBs erzeugt werden:
<html><body>
<p><a href="Buch A von Autor Soundso.epub/">
Buch A von Soundso </a>
<p><a href="Grimms Märchen/">
Grimms Märchen </a>
</body></html>
Wer ein Verzeichnis-ePUB zippen will, um eine reguläre ePUB-Datei zu erzeugen, sollte zuerst die Datei mimetype in die jungfräuliche Zip-Datei einfügen. (Die Datei enthält die Zeichenfolge application/ePUB+zip und wird eventuell von Viewern oder Readern genutzt, um ePUB-Dateien als solche zu identifizieren, und muss in der Zip-Datei als erste Datei gespeichert sein.)
Danach können die restlichen Verzeichnisse und Dateien in die Zip-Datei integriert werden.
Wikipedia zu ePUB.
Google zu freie ePUB.
webPUBi hat einen HTTP-Server eingebaut und ist somit ein potentielles Sicherheitsrisiko.
Bei den meisten DSL-Routern ist die Firewall so eingestellt, dass keine Zugriffe von außerhalb durchgelassen werden. Das heißt, selbst wenn webPUBi im lokalen Netz über WLAN oder Kabel Dateien ausliefert, ist webPUBi vom Internet aus nicht erreichbar. Dazu müsste der Port in der Router-Firewall freigegeben werden.
webPUBi greift nur auf Dateien und Verzeichnissen im booksroot-Verzeichnis zu.
/********************************************************
Ab hier gibt's nur noch HTML-/ePUB-Nerd-Zeug
zu lesen.
Wen die Internas nicht weiter interessieren, kann
sich den folgende Text sparen.
********************************************************/
In der Datei index.forms.html wird das Aussehen des Inhaltsverzeichnisses zu jeder ePUB-Datei bestimmt.
Bitte nicht verwirren lassen. Es gibt eine index.htm-Datei, die die Links auf die einzelnen Bücher enthält, und eine weitere index.htm für jedes Buch. Diese zweite index.htm wird immer dann dynamisch von webPUBi erzeugt, wenn ein Browser eine HTTP-Anfrage zu einem ePUB absetzt.
Wie diese index.htm-Datei im Detail aussieht, kann mit den Formatvorlagen in index.forms.html bestimmt werden.
Die Formatvorlagen in index.forms.html sind durch spezielle Kommentare gekennzeichnet und werden durch diese speziellen Kommentare von webPUBi erkannt, herausgefilter mit dem Inhalt der ePUBs gemischt und als HTML-Seite an den Browser geschickt.
Außerdem gibt es Platzhalter, die dadurch kenntlich sind, dass sie mit
Prozentzeichen anfangen und enden.
Beispiele: %docTitle%, %docAuthor%, %navPoint%.
Die Funktionsweise des ganzen Systems ist recht einfach, obwohl es auf den ersten Blick verwirrend aussieht.
Die Informationen werden aus den ePUBs ermittelt. An den Stellen in die Formatvorlagen eingetragen, wo die Platzhalter stehen. Diese neuen Blöcke werden wieder bei anderen Vorlagen anstelle der Platzhalter eingefügt, bis das HTML-Inhaltsverzeichnis des ePUBs fertig ist und als ePUB/index.htm zum Browser geschickt wird.
Wichtig: Die ganze Vorlage sollte immer als UTF-8 gespeichert werden. Keinesfalls als Unicode speichern. Wenn sie als Ansi-Datei gespeichert wird, werden z. B. Umlaute nicht richtig dargestellt.
Anfang: | <!-- Index-Form --> |
<html> <head <title> %docTitle% von %docAuthor% </title><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style> body { font-family: sans-serif; } </style> </head> <body> <h1> %docTitle% </h1<h2> %docAuthor% </h2><h3>Inhalt</h3> %navPoints% </body> </html> | |
Ende: | <!-- Index-Form end --> |
Anfang: | <!-- navPoints-Open-Form --> |
<ul>%notUsed-hrefs% | |
Ende: | <!-- navPoints-Open-Form end --> |
Anfang: | <!-- navPoints-Close-Form --> |
</ul> | |
Ende: | <!-- navPoints-Close-Form end --> |
Anfang: | <!-- navPoint-Form --> |
<li><a href="%src% ">%text% </a>%notUsed-hrefs% </li>
| |
Ende: | <!-- navPoint-Form end --> |
Anfang: | <!-- notUsed-hrefs --> |
<br /><small>%hrefs% </small>
| |
Ende: | <!-- notUsed-hrefs end --> |
Anfang: | <!-- notUsed-href --> |
<a href="%href% ">[ %lfn% ]</a> ▪
| |
Ende: | <!-- notUsed-href end --> |
Die Menüs sind in der Datei index.js enthalten.
Wer ein bisschen JavaScript-kundig ist, kann sich eventuell eigene Funktionen dazuprogrammieren.
Als kleine Demo für eine solche Anpassung ist eine JavaScript-Funktion enthalten, die die Textanzeige invertiert (den Hintergrund schwarz macht und den Text weiß).
Am Anfang jeder ePUB-HTML-Datei sind ein paar globale Variablen eingetragen (relative Pfade zur [Bücher-] index.htm etc.). Am besten lässt man sich die von webPUBi ausgelieferte HTML-Datei als Quelltext anzeigen, alles Weitere steht dann in index.js im booksroot-Verzeichnis.
Ich würde mich freuen von netten Ideen zu hören, was man so alles noch dazuprogrammieren kann. Denkbar wären z. B. Lesezeichen, die per Cookie gespeichert werden könnten etc.
0.4 Fehler bei unkomprimierten in zip gespeicherten Dateien beseitigt.
0.3 Byte-Bereich für GET.
0.2 Läuft prima.
Danksagungen, Anregungen und Fehlerreports bitte an Thilo Brai.