Wstęp
Wszystko zaczęło się od prostego pytania: czy da się zbudować kompletny proces publikacji książki — od składu w PageStream, przez PDF, aż do gotowego EPUB i strony WWW? Odpowiedź brzmi: tak, ale nie jednym narzędziem i nie w jednym środowisku. Zamiast szukać gotowych rozwiązań, powstał własny pipeline łączący MorphOS, Linux i serwer NAS.
Problem
PageStream bardzo dobrze sprawdza się jako narzędzie DTP (w tym wypadku jest to wersja 5.1.2 Pro dla MorphOS-a), ale nie oferuje bezpośredniego eksportu do EPUB (szczególnie fixed-layout). Jako podstawowy format wybrano PDF, z którym aplikacja daje sobie radę bez problemu. W praktyce oznacza to konieczność zbudowania procesu pośredniego od projektu DTP do gotowego EPUB.
|
| Rys.1 Pipeline |
Jak to wygląda w praktyce?
PageStream → PDF → obrazy → XHTML → EPUB (FXL)
Wykonanie:
Skład powstaje w PageStream (MorphOS). Projekt eksportowany jest do PDF i w tym momencie następuje podział na dwie gałęzie: PDF finalny, który może być używany do druku oraz gałąź EPUB.
W tym wypadku do dokumentu jest dodawany spis treści (TOC) za pomocą narzędzia pdftk i własnoręcznie wykonanego skryptu "dodaj_toc" oraz kompresja (GhostScript). I tu należy dodać, że właściwie, to jedyny punkt pipeline, który trzeba wykonać poza MorphOS-em (pdftk).
EPUB
PDF konwertowany jest do obrazów poszczególnych stron (Linux), za pomocą pdftocairo lub GhostScript. Te dwa podejścia zostały sprawdzone i są akceptowalne ze wskazaniem na cairo. Następnie generowana jest struktura EPUB (XHTML, OPF, NAV), za pomocą skryptów - odpowiednio: genfxl, genopf i gennav, a finalny EPUB powstaje jako archiwum ZIP - skrypt "build_epub".
Obróbka grafiki
Cała obróbka graficzna została wykonana natywnie w środowisku MorphOS. Do pracy wykorzystano: ImageFX oraz ShowGirls. Obejmowało to przygotowanie materiałów, retusz, nanoszenie elementów oraz konwersje formatów.
|
| Rys.2 Architektura |
Pipeline działa w modelu rozproszonym:
Wspólny katalog
Dzięki SMB pliki generowane są bezpośrednio w katalogu widocznym dla Linuxa.
Kierunek rozwoju – Lua
Część pipeline’u została przeanalizowana pod kątem przeniesienia na MorphOS. Jako pierwszy krok powstała natywna wersja jednego ze skryptów (genfxl) napisana w Lua, tworząca strony XHTML. Dalsze przenoszenie elementów pipeline’u będzie odbywać się stopniowo.
Optymalizacja PDF
Do przygotowania plików PDF na potrzeby strony wykorzystywana była kompresja przy użyciu GhostScript, jak wzmiankowano wcześniej. Na MorphOS-ie jest to możliwe (wersja 8.70), jednak w praktyce rozwiązanie jest stosunkowo wolne, dlatego nie był to domyślny wariant w codziennej pracy.
Założenia projektu
Pipeline został zaprojektowany tak, aby możliwe było wprowadzanie zmian na każdym etapie procesu. W praktyce oznacza to:
|
| Rys.3 Efekt |
Finalny projekt dostępny jest w dwóch formatach: PDF i FXL EPUB. Całość można zobaczyć tutaj: https://ziggy-books.com.
Publikacja
Warto wspomnieć o kwestii bezpieczeństwa w sieci. W klasycznym podejściu można byłoby udostępnić stronę bezpośrednio z własnej sieci, przekierowując (np. 443) na routerze. W praktyce jednak takie rozwiązanie oznacza ekspozycję portu i potencjalne zagrożenie z zewnątrz. W tym wypadku zastosowano inne podejście — wykorzystanie Cloudflare Tunnel jako warstwy pośredniej. Dzięki temu serwer Synology NAS pozostaje w sieci lokalnej, a dostęp do strony realizowany jest przez bezpieczny tunel, bez konieczności ujawniania portów. Alternatywą pozostaje oczywiście klasyczny hosting, jednak tu celem było zachowanie pełnej kontroli nad środowiskiem przy jednoczesnym ograniczeniu ekspozycji sieci lokalnej.
Podsumowanie
Projekt nie jest tylko próbą stworzenia książki. To raczej eksperyment pokazujący, że można zbudować kompletny, rozproszony workflow, łączący różne systemy i podejścia – a co najważniejsze, cały pipeline działa w praktyce i jest używany do tworzenia publikacji.
Na koniec
W tej koncepcji wykorzystano kilka prostych skryptów automatyzujących kolejne etapy pipeline’u. Nie stanowią one żadnej tajemnicy — w razie zainteresowania chętnie je udostępnię.