Za drogo? Ustaw alerty cenowe na e-booki i kupuj taniej!

Wysyłasz plik EPUB przez Send to Kindle i dostajesz coś jak PDF? Znalazłem przyczynę błędu E016!

Udostępnij na FB Udostępnij na Mastodonie

W ostatnich dniach coraz więcej osób zauważa nietypowe błędy przy wysyłaniu niektórych plików EPUB na Kindle. 

Plik na czytnik przechodzi, ale wygląda… dziwnie. Bo ma ikonkę PDF, no i otwiera się jak PDF, bez możliwości zmiany wielkości tekstu, za to z opcjami ustawienia kontrastu.

Jednocześnie dostajemy na adres mailowy wiadomość o temacie „Your document was delivered to your Kindle in its original layout” i następującej treści.

We weren’t able to make the layout adjustable for this document because its formatting is incompatible with Kindle’s reflowable layout, so we delivered it with its original layout preserved (similar to PDF). You won’t be able to change the text size or how the text flows on the page. Get troubleshoot help for file formatting issue (see error E016).

Czyli Amazon potwierdza – nie mógł zachować płynnego („reflowable”) układu, dopasowującego się do ekranu, dlatego zastosował układ stały („fixed”), który ma sens np. w komiksach, ale niekoniecznie w zwykłych książkach.

Z tym problemem zwróciły się do mnie dwie księgarnie, jak również jeden z Czytelników. Dostałem też kilka plików, które nie działały.

Poszukiwanie błędu

Pomoc Amazonu dotycząca błędu E016 sugeruje, że w książce jest jakiś nietypowy skład: skomplikowane tabele, grafiki, układ kolumnowy albo inne elementy charakterystyczne dla publikacji „fixed layout”. Należy sprawdzić tabelki, osadzone multimedia, przypisy wewnątrz przypisów i tak dalej. Tyle że miałem do czynienia z prostymi powieściami, bez zaawansowanego formatowania.

Przetestowałem kilka wariantów takiego pliku: bez znaku wodnego, z minimalnym CSS, z usuniętym dużym plikiem graficznym. Zawsze pojawiał się błąd. Sprawdziłem też pliki walidatorem pod względem zgodności ze specyfikacją – były pomniejsze błędy, ale nic poważnego.

A co działało? Wystarczyło taki plik przerzucić do Calibre i przekonwertować do formatu EPUB. Wtedy wysyłał się prawidłowo, niezależnie od tego, czy konwertowałem do EPUB2 czy EPUB3. Calibre normalizuje różne elementy pliku, dlatego jest on bardziej strawny dla Amazonu.

Ale co konkretnie było przyczyną błędu? Nie jest to proste do oceny, bo Calibre na wyjściu wypuszcza plik z setkami zmian. Która z nich sprawiła, że plik nagle zaczął działać?

I tu muszę przyznać, że do porównania zmian bardzo dobrze sprawdziły się narzędzia LLM. Duże modele językowe są przeznaczone do obróbki tekstu, a przecież EPUB to w praktyce archiwum ZIP o określonej strukturze, zawierające pliki tekstowe i graficzne. LLM może mi np. wygenerować 7 wariantów plików z niewielkimi zmianami w kodzie, które wysyłam do Kindle i sprawdzam, które działają. Zrobiłbym to ręcznie, ale oznaczałoby to więcej „rzeźbienia” i zajęłoby wiele godzin.

No i po testach kilkudziesięciu wersji znalazłem winnego.

Winny jest język!

Chodzi o deklarację języka w pliku „content.opf” znajdującym się wewnątrz EPUB. Plik OPF to taka „metryczka” książki, zawierająca jej najważniejsze metadane oraz informacje o strukturze publikacji.

W jednym z e-booków miałem taką deklarację języka:

<dc:language id="language1">pl</dc:language>

W innym e-booku była taka:

<dc:language xsi:type="dcterms:RFC3066">PL</dc:language>

Sprawę załatwiła zamiana na:

<dc:language>pl</dc:language>

A zatem wygląda na to, że jeśli książka jest w języku polskim, wszelkie dodatkowe atrybuty w elemencie <dc:language> sprawiają, że parser po stronie Send To Kindle się wysypuje.

Jest to absurdalne, bo jaki związek deklaracja języka ma mieć z layoutem? To trochę tak, jakby Word odmówił zmiany wielkości czcionki dlatego, że we właściwościach dokumentu podałem niewłaściwy język.

Warto jeszcze zaznaczyć, że o ile „xsi:type” to już dość stara konstrukcja, sam atrybut „id” jest jak najbardziej legalny i dopuszczalny przez specyfikację EPUB 3.3.

Błąd języka? Przypadek – nie sądzę!

W swoich zaleceniach Amazon podkreśla, że wysyłany plik powinien być w jednym z obsługiwanych języków, którymi są:

Afrikaans, Alsatian, Arabic, Basque, Bokmål Norwegian, Breton, Catalan, Chinese (Simplified), Cornish, Corsican, Danish, Dutch, Eastern Frisian, English, Finnish, French, Frisian, Galician, German, Icelandic, Irish, Italian, Luxembourgish, Manx, Northern Frisian, Norwegian, Nynorsk Norwegian, Portuguese, Provencal, Romansh, Russian, Scots, Scottish Gaelic, Spanish, Swahili, Swedish, Welsh, and the Indic languages Malayalam, Tamil, Hindi, Gujarati, and Marathi.

Zrobiłem więc jeszcze jeden test. W oryginalnym pliku (tym z dodatkowymi atrybutami) zmieniłem język z „pl” na „de”, czyli niemiecki. Wysłałem. I o dziwo – plik przeszedł bez błędu.

Czyli problemem nie jest tylko deklaracja języka, a to, jaki język stosujemy!

Parę tygodni temu Amazon popsuł rozpoznawanie języka polskiego w epubach i traktuje je jak anglojęzyczne. Bardzo więc możliwe, że psują dalej i błędnie traktują pliki w nieobsługiwanych językach.

Zrobiłem jeszcze jeden test – w oryginalnym pliku zmieniłem język książki na czeski (cs), no i tak jak w przypadku polskiego – nie przeszła. To nie jest tylko tak, że „nas” dyskryminują.

Podsumowując moje testy: problem wywołuje kombinacja nieobsługiwanego przez Send to Kindle języka i dodatkowych atrybutów w elemencie <dc:language>.

I to jest powód, dla którego o tym (poważnym) błędzie nie znalazłem doniesień na anglojęzycznych forach. Bo jeśli książka ma zadeklarowany język angielski czy niemiecki, to przechodzi bez problemu.

Co więc zrobić, jeśli plik nie działa?

Jeśli jesteś typowym użytkownikiem – to po prostu przekonwertuj plik przy pomocy programu Calibre z EPUB na EPUB. To jest zresztą uniwersalna rada, którą nieraz już tu dawałem.

Jeśli jesteś wydawcą/firmą przygotowującą e-booki – upewnij się, czy deklaracja języka w pliku OPF jest możliwie najprostsza, czyli w przypadku języka polskiego:

<dc:language>pl</dc:language>

Nie usuwałbym jej całkowicie, bo to doprowadzi do błędu kompatybilności z innymi czytnikami.

Niestety, dopóki Amazon tego nie poprawi, problem dotknąć może wielu klientów księgarni wysyłających zakupione pliki na czytniki Kindle.

Na razie nie błąd nie wydaje się bardzo powszechny, osobiście nie miałem w tym tygodniu żadnego problemu ze swoimi plikami. Może jednak dotyczyć starszych tytułów, gdzie były bardziej rozbudowane deklaracje języka.

A jak to wygląda u Was? Pytam oczywiście posiadaczy Kindle wysyłających pliki bezprzewodowo.

Czy dotknął Cię opisany w artykule błąd? (Plik EPUB wysłany na Kindle, wyglądający jak PDF)

Zobacz wyniki

Loading ...

Udostępnij na FB Udostępnij na Mastodonie

Artykuł był przydatny? Jeśli tak, zobacz 6 sposobów, na jakie możesz wspomóc Świat Czytników. Dziękuję!

Ten wpis został opublikowany w kategorii Korzystanie z Kindle, Książki na czytniki i oznaczony tagami , , , , . Dodaj zakładkę do bezpośredniego odnośnika.
Hosting: Zenbox

2 odpowiedzi na „Wysyłasz plik EPUB przez Send to Kindle i dostajesz coś jak PDF? Znalazłem przyczynę błędu E016!

    • Robert Drózd pisze:

      O proszę, czyli nie byłem pierwszy. :) Z tym, że nie tylko o ten atrybut xsi chodzi, bo nawet głupie id potrafi wywalić konwersję.

      0

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Przed dodaniem komentarza zapoznaj się proszę z zasadami komentowania i polityką prywatności

Komentarze do tego artykułu można śledzić także w formacie RSS.