niedziela, lutego 28, 2010

Dalsze zabawy z ePubGeneratorem :-)

Moja chytrość mnie przeraża ;-) [chytrość w sensie przebiegłości ;p]

Dalej bawię się w pisanie wtyczki do generowania plików EPUB, i dziś walczyłem między innymi z tym by wynikowy ebook miał w sobie obrazki jeśli takowe były w oryginalnym pliku.

Problemem okazało się to, że OpenOffice.org w trakcie zapisywania dokumentu jako XHTML zapisuje obrazki w pliku XHTML w postaci osadzonej.

Gdy to zauważyłem to poczułem, że to jednak lekka "amba".... Ale po chwili doznałem olśnienia ;-) Przecież nic nie stoi na przeszkodzie temu by takie osadzone obrazki wyrzucić do zewnętrznych plików, a w miejsce osadzonych danych można spokojnie wstawić nazwy plików wynikowych.

W tym celu wystarczy stworzony plik XHTML wczytać jako dokument XML, a następnie przejść przez wszystkie tagi typu img i dla każdego z nich pobrać zawartość atrybutu src, wyekstrahować z tej zawartości dane w Base64, przekodować je na bajty [tutaj jest problem, bo Java nie daje takiego ficzera sama z siebie, tzn. w przypadku Java'y od Suna jest coś takiego w bibliotekach, choć nie powinno się tego używać bo to tajny ficzer ;-)], zapisać do pliku i w miejsce danych w src wstawić nazwę pliku, teraz już tylko nagrać taki nowy plik XML w miejsce oryginalnego i voilà! :-)

Teraz stoi przede mną konieczność zbudowania GUI i chyba napisania własnego dekodera Base64 bo nie chciałbym dla 1 głupiej funkcji dodawać jakiejś dużej biblioteki do rozszerzenia.

Jak widzę w logach obecnie rozszerzenie do generowania EPUBów nie jest jakoś szczególnie pobierane ;-) [przodują tutaj Boty Google i Yahoo ;-)] ale liczę, że w momencie gdy dodam do niego GUI to wrzucę je do katalogu rozszerzeń OpenOffice.org i zawsze jest szansa, że znajdzie jakichś użytkowników :-) [bym za 2 lata gdy pobierze je powiedzmy 50 tysięcy osób pluł sobie w brodę, że głupi ja, przecież mogłem je sprzedawać nawet po 1 Euro i jaki byłbym bogaty ;p]

Ciągle nie umiem wymyślić jakiejś ładnej nazwy dla rozszerzenia, ale bądźmy szczerzy, od czasów Gadacza żadna nazwa mi jakoś nie wyszła ;-) Sam jak sobie przypomnę nazywam ten projekt "topeszem" [od "nietopesz" ;-)]


Podobne postybeta
ePubGenerator v0.0.2
HeapSort, a MergeSort i QuickSort :-) - od strony "chytrości" ;-)
Nigdy nie zapominaj o FSM! ;-)
Notki z uchodźstwa: jelenie Prezesa
Najkrótsza droga do przyszłości - Polymer ;-)