Kindle for PC, Kindle Previewer i Adobe Digital Editions na Ubuntu

Z tego artykułu dowiesz się jak na Ubuntu 13.10 zainstalować:

  • Kindle for PC (określany czasami jako Kindle4PC)
  • Adobe Digital Editions (ADE)
  • Kindle Previewer

Te trzy powyższe programy mają oficjalne wydania jedynie na Windowsa i Mac OS X. Na szczęście wszystkie trzy działają poprawnie pod wine na Ubuntu 13.10, jednak wymaga to wykonania poniższych w dobrej kolejności.

Wszystkie poniższe kroki zostały wykonane na czystej instalacji Ubuntu 13.10 oraz wine.

Wersje programów

Pobierz następujące wersje programów:

  • Najnowsza wersja Kindle for PC (testowane na 1.10.6)
  • Najnowsza wersja Kindle Previewer (testowane na 2.91)
  • Adobe Digital Edition 1.7.2

Instalacja najnowszej wersji wine

Oficjalna wersja wine znajdująca się w repozytoriach (1.4) niestety nie pozwala na korzystanie z Kindle for PC. Z tego powodu trzeba zainstalować wersję wine z tego ppa (obecnie 1.6).

W konsoli kolejno wpisz:

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install wine

Najnowsza wersja Adobe Digital Editions (2.0) korzysta z WPF, który na razie nie jest wspierany w wine (i prawdopodobnie nie będzie), więc jeśli nie chcemy korzystać z maszyny wirtualnej z Windowsem (co jest kontrproduktywne) to pozostaje nam użyć starszej wersji.

Dla systemu 64-bitowego

Jeśli posiadasz 64-bitową wersję Ubuntu, prawdopodobnie przy próbie uruchomienia z linii komend dowolnego programu korzystającego z wine nastrafisz na następujący błąd:

wine: Unhandled page fault on read access to 0x00000000 at address (nil) (thread 000f), starting debugger...
wine: Unhandled page fault on read access to 0x00000000 at address (nil) (thread 0014), starting debugger...
wine client error:14: write: Bad file descriptor
err:wineboot:start_services_process Unexpected termination of services.exe - exit code -1073741819

Sposób naprawy jest dość prosty – wystarczy usunąć konfigurację wine:

rm -rf ~/.wine

oraz wykonać:

WINEARCH=win32 wineboot --update

Instalacja programów

Jeśli teraz spróbujemy uruchomić instalator Kindle for PC nie uda się to. Trzeba usunąć jeden plik z konfiguracji wine:

rm ~/.wine/drive_c/windows/winsxs/manifests/x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_deadbeef.manifest

Teraz możemy już zainstalować wszystkie programy korzystając z interfejsu graficznego albo z linii komend:

wine KindleForPC-installer.exe
wine KindlePreviewerInstall.exe
wine digitaleditions_172.exe

Korzystanie z programów

Korzystać z zainstalowanych programów można na 3 sposoby:

  1. Można uruchomić je z dasha jak każdy inny program
  2. Użyć dwukrotnego kliknięcia myszą na pliku EPUB lub .mobi – przy instalacji Kindle for PC i ADE powinny zostać ustawione jako domyślnie odpowiednio dla plików .mobi i EPUB.
  3. Z linii komend – xdg-open nazwa_pliku – xdg-open otwiera plik z użyciem domyślnego programu, a więc jest odpowiednikiem dwukrotnego kliknięcia myszą

W niektórych przypadkach, aby czcionki w Kindle for PC wyświetlały się poprawnie konieczne może być zainstalowanie pakietu ttf-mscorefonts:

sudo apt-get install ttf-mscorefonts-installer

content.opf – sekcja guide a Kindle

W tym wpisie dowiesz się:

  • Jak stworzyć działający spis treści na Kindle
  • Jak stworzyć odwołanie do okładki na Kindle
  • Czym się różni plik content.opf na Kindle od tego samego pliku w EPUB

Sekcja <guide> zawarta w pliku content.opf jest opcjonalna. W zamyśle ma służyć jako sposób na wskazanie istotnych części książki, takich jak spis treści, indeks, okładka czy strona tytułowa. Sposób jej wykorzystania przez czytniki zależy już od ich producentów. Warto jej używać, ponieważ może ona znacznie ułatwić i uprzyjemnić czytelnikom korzystanie z publikacji.

Jedną z cech charakterystycznych e-bookowych formatów Amazonu jest to, że nie kopiują one całej dokumentacji EPUB, a jedynie korzystają z niej wybiórczo. Format MOBI/KF8 dopuszcza tylko 3 elementy nawigacyjne zawarte w tej sekcji.

Są to odpowiednio: początek książki, spis treści i okładka:

<guide>
<reference href="Text/chapter1.html" title="Text" type="text" />
<reference href="Text/toc.html" title="Table Of Contents" type="toc" />
<reference href="Images/cover.jpg" title="Cover" type="cover" />
</guide>

Po zdefiniowaniu, te elementy umożliwiają dostęp do odpowiednich części dokumentu z poziomu Menu > Go to lub jego odpowiedników.

Początek książki

Początek książki definiujemy używając:

<reference href="Text/chapter1.html" title="Text" type="text" />

gdzie:

  • href="Text/rozdzial.html" wskazuje ścieżkę do pliku na którym domyślnie ma się otworzyć książka na Kindle.
  • title="Text" opisuje czym jest ten plik, przy czym może być tutaj podana dowolna wartość z wyjątkiem takiej samej wartości, jak w type. Jako, że wielkość liter ma znaczenie, najprościej stosować wartość "Text"
  • type="text" – określa typ elementu nawigacji. Należy użyć typu "text", ponieważ jest to jedyny typ, który działa z Kindle. Niektórzy próbują używać typu „start”, który intuicyjnie wydaje się być właściwy, jednak taki nie jest.

Bardzo istotną kwestią jest zdefiniowanie początku książki na samej górze sekcji <guide> przed zdefiniowaniem spisu treści i okładki. W przeciwnym przypadku odwołanie może nie zostać użyte. Jako początek książki możemy wskazać dowolny plik, nawet znajdujący się w środku książki. Jest to po prostu miejsce, gdzie ma się otworzyć książka za pierwszym razem.

Spis treści

Spis treści definiujemy używając:

<reference href="Text/toc.html" title="Table Of Contents" type="toc" />

Odwołanie musi wskazywać na plik HTML ze spisem treści. Czytniki Kindle korzystają z pliku toc.ncx wyłącznie w celu stworzenia znaczników rozdziałów oraz szybkiej nawigacji. W pełni funkcjonalny spis treści z linkami do odpowiednich rozdziałów musi mieć postać zwykłego pliku HTML. Właśnie do tego pliku, anie toc.ncx odwołujemy się w sekcji <guide>,

Okładka

W przeciwieństwie do formatu EPUB, gdzie odwołując się do okładki musimy wskazać plik HTML, który zawiera okładkę, w pliku źródłowym dla Kindle wskazujemy sam plik JPG.

<reference href="Images/cover.jpg" title="Cover" type="cover" />

Jeśli użyjemy kindlegena na pliku EPUB, który posiada okładkę w formie pliku HTML, otrzymamy ostrzeżenie:

Info(prcgen):I1052: Kindle support cover images but does not support cover HTML. Hence using the cover image specified and suppressing cover HTML in content.

ale okładka i tak zostanie poprawnie wykryta i wykorzystana.

Warto oczywiście plik przetestować, aby przekonać się czy działa zgodnie z naszymi oczekiwaniami.

Pakowanie pliku EPUB

W tym wpisie dowiesz się:

  • Jak poprawnie spakować plik EPUB
  • Jak uniknąć błędów epubcheck związanych z pakowaniem pliku EPUB
  • Jak używać programu zip z linii komend
  • Jak zautomatyzować proces pakowania pliku EPUB pod Ubuntu

Pakowanie pliku EPUB nie jest tak proste jak się na pierwszy rzut oka wydaje. Wiele osób zabiera się do tej czynności od złej strony, stosując popularne archiwizery z interfejsem graficznym takie jak WinRar, WinZip albo 7-zip.

Testując tak spakowany plik epubcheck, otrzymamy jeden z następujących komunikatów:

ERROR: book.epub: Length of the first filename in archive must be 8, but was 9
ERROR: book.epub: Length of the first filename in archive must be 8, but was 15
ERROR: book.epub: Length of the first filename in archive must be 8, but was 24

Komunikat ten może zawierać różne liczby, w zależności od tego w jaki sposób nasz EPUB został spakowany.

Ten błąd oznacza, że pierwszym plikiem w archiwum musi być mimetype. Problem ten łatwo rozwiązać korzystając z programu zip z linii komend. Sposób instalacji i korzystanie z zip zależy od używanego systemu operacyjnego.

Ubuntu

Instalacja zip pod Ubuntu

W Ubuntu, wystarczy otworzyć terminal i wpisać:

sudo apt-get install zip

Korzystanie z zip pod Ubuntu

Poniższe instrukcje przeznaczone są dla systemu Ubuntu, ale powinny działać pod dowolną inną dystrybucją Linuksa, a także pod Mac OS X.

Otwieramy dash i wpisujemy terminal lub nazwę jego alternatywy (np. tilda).

Zgodnie ze specyfikacją EPUB, pierwszym plikiem w archiwum musi być nieskompresowany mimetype. W konsoli wpisujemy

zip -X plik.epub mimetype

Potem trzeba dodać do pliku pozostałe foldery:

zip -rg plik.epub OEBPS/
zip -rg plik.epub META-INF/

Jeśli nie chcemy za każdym razem wpisywać tych komend ręcznie, możemy użyć prostego skryptu napisanego w bashu:

#!/bin/bash

# Pakowanie mimetype bez kompresji
zip -X $1 mimetype

# Pakowanie pozostałych folderów
zip -rg $1 OEBPS/
zip -rg $1 META-INF/

Skrypt zapisujemy np. w pliku zipepub.sh.

Korzystanie ze skryptu

Po zapisaniu pliku na dysk np. w katalogu domowym, musimy pozwolić na jego wykonywanie wpisując w konsoli

sudo chmod a+x ~/zipepub.sh

gdzie ~/zipepub.sh to pełna ścieżka do pliku. W tym przypadku jest to katalog domowy.

Teraz wchodzimy do folderu z plikami, które chcemy spakować i wpisujemy

~/zipepub.sh book.epub

gdzie book.epub to nazwa pliku do którego pakujemy książkę.

W ten otrzymujemy szybko otrzymujemy poprawnie spakowany plik EPUB.

Windows

W systemie Windows należy pobrać plik zip.exe. Umieszczamy ten plik w dowolnym folderze, np.

c:\\zip\\

Otwieramy konsolę za pomocą:

Menu Start > Uruchom > cmd 

lub w nowszych wersjach systemu Windows:

Menu Start > cmd 

Wchodzimy za pomocą konsoli do folderu, w którym znajdują się pliki do spakowania, np.

cd c:\\epub

Wpisujemy

c:\\zip\\zip.exe plik.epub -DX0 mimetype

a następnie

c:\\zip\\zip plik.epub rDX9 META-INF
c:\\zip\\zip plik.epub rDX9 OEBPS

Po spakowaniu pliku oczywiście korzystamy z epubcheck, aby upewnić się, że nasz EPUB nie zawiera żadnych błędów.

Struktura pliku EPUB

W tym wpisie dowiesz się:

    • Co to jest EPUB
    • Jaka jest struktura pliku EPUB
    • Jakie pliki wchodzą w skład EPUB i jaka jest funkcja każdego z nich

Czym jest EPUB?

EPUB to po prostu archiwum zip o odpowiedniej strukturze. Każdy plik EPUB można rozpakować, otrzymując w ten sposób wszystkie foldery i pliki wchodzące w jego skład. Zrozumienie struktury pliku EPUB jest kluczowe dla tworzenia dobrej jakości publikacji elektronicznych. Zła struktura nie tylko utrudnia pracę, ale także może spowodować błędy epubcheck.

Wielkość liter w nazwach folderów oraz plików ma znaczenie. ABC.html to inny plik niż abc.html. Poniżej nazwy folderów są pisane z wielkiej a plików z małej litery.

mimetype
META-INF/container.xml
OEBPS
     /content.opf
     /toc.ncx
     /Text
           /text1.html
           /text2.html
           /text3.html
    /Styles
           /reset-epub.css
           /book.css
           /kindle.css    
    /Images
           /cover.jpg
           /image1.jpg
           /image2.jpg
           /image3.jpg
    /Fonts
           /FontRegular.otf
           /FontItalic.otf
           /FontBold.otf
           /FontBoldItalic.otf

Struktura folderów

W pliku EPUB powinny znajdować się tylko dwa główne foldery. META-INF zawiera tylko plik container.xml. Folder OEBPS zawiera całą treść książki, czyli tekst, style, spis treści, obrazki oraz czcionki.

mimetype

Plik mimetype to po prostu plik tekstowy, zawierający dokładnie jedną linijkę tekstu

application/epub+zip

Plik musi być umieszczony w folderze głównym, jako pierwszy plik w archiwum i nie może być skompresowany. Szczegółowe informacje na ten temat znajdują się we wpisie dotyczącym pakowania pliku EPUB.

containter.xml

Plik container.xml zawiera jedynie ścieżkę do pliku content.opf

<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
    <rootfiles>
        <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
   </rootfiles>
</container>

content.opf

content.opf zawiera listę wszystkich plików wchodzących w skład pliku EPUB, ich kolejność, a także opcjonalną sekcję <guide>, która może być użyta do wskazania takich elementów publikacji jak okładka, spis treści czy miejsce, w którym książka powinna domyślnie się otworzyć. W archiwum nie powinien znaleźć się żaden plik, który nie został wskazany w content.opf. Szczegółowo ten plik omówię w osobnym wpisie.

toc.ncx

toc.ncx zawiera spis treści, do którego czytelnik może uzyskać dostęp korzystając z odpowiednich opcji urządzenia lub oprogramowania. W czytnikach Kindle ten plik jest wykorzystywany do tworzenia znaczników rozdziałów znajdujących się na pasku w dolnej części ekranu oraz do szybkiej nawigacji pomiędzy nimi za pomocą 5-kierunkowego kontrolera. Szczegółowo ten plik omówię w osobnym wpisie.

Po tym jak stworzymy wszystkie potrzebne pliki, pozostaje nam spakować plik EPUB.