Struktura pliku ePUB

wpis w: Formaty | 0

Książki w formie elektronicznej dostępne są w wielu różnych formatach. Esencją elektronicznych publikacji jest format ePUB, który jest i będzie najpopularniejszym z dostępnych formatów, stanowiąc główne źródło właściwie zbudowanej cyfrowej książki. Dziś zajrzymy pod maskę takiego pliku, aby bliżej poznać jego strukturę.

Jest to pierwszy artykuł z cyklu edycji i zarządzania plikami książek elektronicznych. Skupimy się tutaj na podstawach tego zagadnienia i liczę na to, że pojawią się pierwsze pytania – śmiało zadawajcie je w komentarzach, a poruszę Wasze wątpliwości w kolejnych artykułach lub/i uzupełnię informacje również i w poniższym tekście.

Czym jest plik ePUB?

Temu zagadnieniu poświęciłem odrębny artykuł, w którym pokrótce wyjaśniłem sens istnienia tego formatu. Zacytuję najbardziej kluczową jego część:

“Format ten opiera się na standardach internetowych, które definiują sposób kodowania strukturalnych i semantycznie ulepszonych treści. Mowa tutaj o HTMLCSSobrazach i innych zasobach. Wszystko to zawarte jest w jednym pliku, a konkretnie archiwum ZIP, zawierającym struktury XML i wcześniej wspomniane zasoby HTML i CSS. W wersji ePUB 3 z kolei, mowa również o zasobach audio i wideo oraz kodzie JavaScript.”

Aktualną wersją formatu jest ePUB 3.1, którego różnicę z kolei wyjaśniłem tutaj.

Jak otworzyć plik ePUB?

Tak jak wspomniałem w powyższym cytacie, plik ePUB jest niczym innym, jak skompresowanym plikiem ZIP, zawierającym elementy, które składają się na całość naszej książki. Mowa tutaj o strukturze, która zawiera:

  • pliki HTML
  • arkusze stylów CSS
  • obrazy
  • pliki XML
  • pozostałe obiekty, które definiują sposób wyświetlania książki

Wszystkie te elementy szczegółowo zostały opisane w późniejszej części artykułu. Najpierw musimy odpowiedzieć sobie na pytanie, w jaki sposób “dostać się” do środka? Nic prostszego. Przygotujmy sobie plik ePUB, który będziemy chcieli edytować. Aby go otworzyć, wystarczy wykonać kilka prostych kroków:

  1. Na pliku w formacie ePUB, prawym przyciskiem myszy otwieramy menu kontekstowe, z którego wybieramy opcję “Zmień nazwę”.
  2. Zmieniamy format pliku. Zamieńmy zatem .epub na .zip. Zatwierdzamy zmianę.
  3. Plik został właściwie przekonwertowany na plik z archiwum zawierające pliki.
  4. Ponownie prawym przyciskiem, tym razem na pliku z archiwum, wybieramy opcję “Wypakuj do…”.
  5. Wybieramy lokalizację właściwą, gdzie archiwum zostanie wypakowane. Zatwierdzamy.
  6. Voila! Książka została rozpakowana, został utworzony folder z jej zawartością i możemy dobrać się do jej struktury.

Plik EPUB (archiwum ZIP)

Pamiętaj, że potrzebny będzie Ci edytor tekstu, w którym w prosty sposób będziesz mógł dokonać wszelakich zmian. Najwygodniejszym narzędziem – moim zdaniem – będzie darmowy program Sigil. Dlaczego akurat to narzędzie i skąd możesz je wziąć opisałem dokładnie tutaj.

Zawartość pliku ePUB

Zawartość pliku EPUB

Otwórzmy teraz wypakowany folder. Szkielet właściwie zbudowanego plik ePUB składa się z trzech podstawowych komponentów:

mimetype

Plik mimetype jest zwyczajnym plikiem tekstowym. Deklaruje on systemom odczytu, w jaki sposób archiwum pliku jest sformatowane i jak je przetwarzać. Wszystkie pliki mimetype dla pliku ePUB są identyczne i powinny zawierać wyłącznie frazę:

Oznacza to, że archiwum, z którym się obchodzimy jest rzeczywiście plikiem EPUB.

META-INF

Folder META-INF zawiera informacje o metadanych e-booków. META-INF zwykle zawiera tylko jeden plik XML: container.xml. Celem tego obowiązkowego pliku XML jest wskazanie lokalizacji pliku package.opf, który instruuje aplikację czytającą, gdzie można znaleźć i jak przetwarzać zawartość e-booka.

Oprócz pliku container.xml, katalog META-INF może zawierać inne dokumenty, które zawierają informacje o samym EPUB, takie jak osadzone czcionki i szyfrowanie DRM. Odpowiedzialne są za to takie pliki, jak na przykład metadata.xml, manifest.xml, czy options.xml. Są one plikami opcjonalnymi, dlatego w tej chwili się na nich nie będziemy skupiać.

container.xml

Plik ten jest elementem, który odpowiada za wywołanie publikacji. Jego zawartość określa położenie plików *.opf, o których wspomnę nieco później. Są one swojego rodzaju “mózgiem” publikacji.

W zależności od wersji i zawartości publikacji, container.xml będzie odwoływał się do wszystkich dokumentów rozmieszczonych w różnych katalogach, wspierając tą informacją system odczytujący plik. Dzięki temu, wspomniany system będzie mógł odnaleźć zawartość plików *.opf i wyciągnąć informacje na temat struktury publikacji.

OEBPS / OPS

W folderze OEBPS (lub – świeżo po migracji formatu OEB na EPUB – OPS) z  znajduje się faktyczna zawartość e-booka. W tym folderze znajduje się tekst, obrazy, czcionki i arkusze stylów, które są wymagane do wyświetlenia e-książki na ekranie. Folder OEBPS składa się z trzech obowiązkowych plików deklaratywnych – plików .opf, .ncx i .css – a także wszystkich plików, które składają się na zawartość dokumentu EPUB.

Ciekawostka: Skąd nazwa OEBPS? Open eBook Publication Structure to pierwotna nazwa formatu książek elektronicznych, który później został zastąpiony właśnie przez EPUB. Tworząc strukturę publikacji elektronicznej, wierni tradycji wydawcy wciąż posługują się tym akronimem, jak i korzystają z niego również różne narzędzia budujące pliki EPUB.

*.opf

Pliki *.opf, a konkretnie package.opfcontent.opf, są plikami XML, które zawierają dane strukturalne pliku EPUB. Pliki te zawierają wszystkie dane strukturalne i są głównym źródłem informacji na temat sposobu przetwarzania i wyświetlania pliku.

Pliki *.opf dzielą się na cztery główne kategorie:

  • <metadata>
    Sekcja metadata odpowiada za przekazanie wszystkich podstawowych informacji dotyczących publikacji. Mowa tutaj o tytule, autorze, okładce książki, języku, wydawcy, prawach autorskich, układzie tekstu i tym podobnych szczegółach. Wszystkie metadane mogą zostać wyrażone bezpośrednio w kodzie sekcji lub za pośrednictwem odnośników, jeśli są przekazywane jako zasoby zewnętrzne.
  • <manifest>
    Sekcja manifest jest najbardziej złożoną listą danych, które składają się na publikację EPUB. Mowa tutaj o rozdziałach w formacie XHTML, obrazach, czcionkach, kaskadowych arkuszach stylu i tym podobnych. System czytający publikację przetworzy tylko te pliki, które są tutaj zawarte, mając informacje o rodzaju nośnika, dzięki wcześniej wspomnianego mimetype. Dzięki informacjom zawartym w sekcji manifest, system rozpozna również typ danych.
  • <spine>
    Sekcja spine z kolei określa domyślny porządek czytania, dzięki plikom HTML/XHTML, które tworzą treść publikacji. Każdy element “szkieletu” odwołuje się do właściwego elementu znalezionego w sekcji manifest.
  • <guide>
    Sekcja guide “nawiguje” system czytający, wskazując na przykład spis treści, czy właściwy początek tesktu. Sekcja ta została wycofana z wersji EPUB 3.0, jednak zdarza się jeszcze, że wydawcy ją wykorzystują, aby systemy odczytujące EPUB 2.0 nie miały kłopotów z przetworzeniem dokumentu.

*.ncx

Tak jak wspominałem przy opisie sekcji guide, do wycofanych z wersji 3.0 kwestii, należy właśnie plik .ncx, a konkretnie toc.ncx. Jest to plik XML, który ustala komunikację między elementami książki, a odpowiednikami znajdującymi się w spisie treści.

Jako, że jest to “przestarzały” wynalazek, z EPUB 2.0 już zrezygnowaliśmy, a bazujemy już na wersji 3.0, zatem nie będziemy się skupiać na jego dokładniejszym opisie.

*.css

Kaskadowe arkusze stylów, czyli gratka dla wzrokowców. Wszystkie zawarte informacje w pliku .css określają sposób wyświetlania elementów, składających się na publikację EPUB. Zasada działania jest analogiczna do tej, którą stosuje się przy projektowaniu stron internetowych. Dotyczy określania szczegółów formatowania tekstu, rozmiaru i kolorów czcionek, marginesów, akapitów i wielu, wielu innych aspektów wyświetlanej treści.

Z pewnością temu zagadnieniu poświęcę osobny cykl artykułów i poradników, bo temat jest tak samo szeroki, jak i popularny, a każdy, nawet początkujący konwerter powinien orientować się chociażby w najbardziej podstawowych kwestiach formatowania CSS.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *