epub aus HTML erzeugen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Hat schon mal jemand von euch Bücher im epub-Format erzeugt? Gibt es da was von Ratiopharm (z.B. eine Python-Bibliothek)? Oder muss ich mir jetzt die epub-Spezifikation antun und dann gucken, was man da tun muss/kann. Und ich ahne schon, dass die Theorie der Spezikation nicht viel mit der Wirklichkeit der epub-Reader wie z.B. iBook oder Stanza zu tun hat. Gibt es da irgendwo Praxiserfahrungen?

Stefan
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sphinx hat da etwas experimentelles: http://sphinx.pocoo.org/latest/faq.html#epub-info
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Schau dir mal Calibre an.
mpathy
User
Beiträge: 48
Registriert: Montag 17. September 2007, 12:29

Ich weiß ich grabe jetzt einen alten Thread aus, oder hijacke ihn, aber vll. haben gerade die Threadbeteiligten hier ein paar gute Tipps.

Ich möchte mir mit einem Python Webframework eine ePub - Anzeigeplattform basteln, und suche gerade, um mir evtl. Arbeit sparen zu können, nach nem geeigneten Modul das mir mit ePUB-Dateien hilft.

Mir geht es hierbei nicht um die Kovertierung NACH ePUB sondern halt eher für die Darstellung einer EPUB im Web.

Die Inhaltsdatei kann ich ja generell auch schon so darstellen, das wäre ja nicht das Thema und dann zur Laufzeit einfach die CSS-Dateien zum Darstellen mit reinkloppen, aber irgendwelche Helferchen für die .ncx und .opf - Dateien wären toll.

Hat da jemand Infos?
mpathy
User
Beiträge: 48
Registriert: Montag 17. September 2007, 12:29

Der Tipp mit Sphinx hat mich über Umwege zum Ziel gebracht, denn der Sourcecode für O'Reillys Plattform "Bookworm", welche ich nachbauen wollte - nur besser versteht sich - ist in der Sphinx-Dokumentation verlinkt.

http://code.google.com/p/threepress/

Auf der Bookworm-Seite selber ist kein Hinweis auf den Sourcecode zu finden gewesen!
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

An einem Viewer, mit dem ich mir anschauen kann, wie iBooks aussehen, ohne dass ich sie per iTunes sync'en muss, wäre ich sehr interessiert. Ich sage extra iBook, weil dort mehr geht, als EPUB 2.0.1 definiert. Beispielsweise kann man komplett HTML 5 und CSS 3 nutzen, so wie es die verbaute Webkit-Engine kann, insbesondere z.B. Videos einbetten oder einen Ambient-Sound-abspielen, ein Feature aus dem kommenden EPUB 3-Standard.

Ich würde tatsächlich den Weg gehen, mir die diverse Standard-Dokumente anzuschauen und danach OPF und NCF (das nur widerwillig, weil es ab EPUB 3 nicht mehr nötig ist und ziemlich kompliziert aufgebaut ist) parsen. Prinzipiell funktioniert es doch so: Du musst das ZIP-Archiv nehmen und nach einer Datei "manifest" suchen, in der die Bytefolge "application/epub+zip" stehen muss. Wenn du extrem genau bist, erwartest du diese Datei als erste im Archiv und brichst ab, wenn sie komprimiert ist. Dann suchst du nach einer Datei "META-INF/container.xml", in der du den Namen der OPF-Datei findest. Diese liest du ebenfalls mit einem XML-Parser sein. Sie besteht aus 4 Teilen: Metadaten gemäß Dublin-Core, das Manifest mit der Liste aller Dateien, der Spine, der die Reading-Order vorgibt und noch ein optionaler Teil, den ich vergessen habe. Du brichst ab, wenn du die Dateien aus dem Manifest nicht in der ZIP-Datei findest. Bist du wieder übergenau, brichst du auch ab, wenn du noch andere Dateien im Archiv findest. Ich meine, die erste Referenz im Manifest muss die NCX-Datei sein, aber vielleicht geht ein Reader auch nach dem media-type. In der NCX-Datei läufst du die NavMap ab (und hoffst, dass die nicht zu sehr verschachtelt ist).

Ich empfinde ja irgendwie OPF und NCX als redundant. Liegt wohl daran, dass da Standard zusammengemischt wurden. Ab EPUB 3 geht das übrigens alles anders. Wie genau, habe ich noch nicht gelesen, aber es ist alles näher an HTML 5 und dessen nav-Elementen angelehnt.

Wenn du's in Python machen willst, würde ich vorschlagen, mit lxml die XML-Dateien zu verarbeiten. Damit (und seinem Element-Tree-API) sollte es nicht weiter schwer sein, die richtigen Elemente zu finden und die Daten zu extrahieren.

Anspruchsvoll finde ich den "Reflow", d.h. wenn man die HTML-Seiten auf Buchseiten abbilden will. Da hatte ich gerade gestern drüber nachgedacht, ob man das irgendwie direkt im Browser mit JavaScript machen kann. Es ist ein leichtes, das Buch in einem DIV mit fester Höhe und "overflow:hidden" anzuzeigen, doch wie stelle ich sicher, dass ich unten nicht noch eine halbe Zeile sehe und wie weiß ich, ab welchem Offset ich das Buch auf der Folgeseite darstellen muss?

Stefan
mpathy
User
Beiträge: 48
Registriert: Montag 17. September 2007, 12:29

Danke für die guten Infos, aufgrund deines Hinweises auf EPUB3 hab ich mal rumgegoogelt.

Hier übrigens ein Dokument mit den Changes: http://idpf.org/epub/30/spec/epub30-changes.html
Allgemeine Infos: http://idpf.org/epub/30

Da ich eh lang an einem Projekt rumbastle, und EPUB3 etwas angenehmer umgesetzt wurde, schreibe ich meinen eBook-Reader gleich für EPUB3.

Man kann ja auch davon ausgehen, das Apple dann maßgeblich an dem EPUB3-Standard beteiligt sein wird und vieles von dem inoffiziellen in den Standard wandern wird.

Früher oder später gibt es dann eh EPUB2 nach EPUB3 - Konverter, dann brauch ich mir dafür ja nicht noch extra Mühe machen ;)
Antworten