Закат солнца вручную

Jul 30, 2008 19:06

Под катом - подводные камни создания читаемых на eInk'овском девайсе книг из fb2 (конкретнее - преобразования fb2 в djvu), в основном для себя, чтобы чего не забыть.


Цепочка такая fb2->docbook->jadetex->pdf->djvu.

1. Используется написанная добрым человеком xslt трансформация. Там же есть и готовый комплект для доведения результата до pdf, но мы не ищем лёгких путей - есть сомнения, что некие FOP/XEP дадут нормальное типографское качество (а экран lBook V3 уже позволяет это качество оценить), так что разбивкой текста на строки и страницы и прочим кернингом будет заниматься старый добрый TeX.
Трансформация без проблем скармливается xsltproc'у (только надо явно включить system_params.xsl - в оригинале этим занимается питоновская обвязка). Есть некие претензии к результату текущей версии - главы описываются как
с содержимым в
, из-за чего в конечном результате большая часть страниц не нумеруется (ибо считается введением в соответствующую часть). Замена
на с убиранием
делает результат более логичным (надо бы пропатчить это в xsl). Включенные в fb2 картинки сами собой не выдираются - пока наплевал и просто убрал их упоманиние в выходном файле.

2. Используется openjade c dtd/dsssl для docbook. Тонкостей хватает:
  • openjade не нравятся entities, идущие с docbook dtd - надо брать отдельно (подходят те, на которые ссылается соответствующая дока с LDP) и прикручивать. К тому же имена этих entities в dsssl от Нормана Уолша отличаются от каталога в dtd отсутствием хвостика //XML - фиксится правкой каталога. Всё это делается один раз.
  • openjade не любит dtd от docbook 4.4 - правим в заголовке документа на 4.3
  • при наличие стандартной http ссылки на dtd openjade пытается лезть к ней, обламывается и игнорирует локальную версию - после удаления замечательно находит по каталогу.
  • кодировка сама собой подхватываться не хочет - прописываем UTF-8 в переменную окружения SP_ENCODING
  • в командной строчке надо перед документом упомянуть xml.dcl и сказать -Vtex-backend для включения определённые только в теховском backend'е фич.
  • большая часть интересных параметров вроде типа страницы прибита в dsssl гвоздями (константы в dbparam.dsl), так что правим их там - страница A6, шрифт 12, переносы включить, строки выравнивать, размеры полей по минимуму (собственно, специфика девайса только здесь).
3. pdfjadetex завёлся практически сразу, разве что русский язык в mlnames.sty намеренно проигнорировали - включаем, чтобы работали переносы.

4. Конверсия в djvu требуется исключительно из-за кривой поддержки pdf в текущих прошивках lbook - заметно плавают расстояния между буквами. Пока ничего лучшего any2djvu не нашёл - в бесплатном софте нет нормального сжатия многостраничных документов.

PS Не всё так просто - any2djvu отказался кушать готовый pdf (ghostscript выкидывает ошибку, хотя на моей машине он же ведёт себя адекватно); при этом результаты работы pdflatex'а он воспринимал нормально. Придётся делать промежуточную конверсию...
Previous post Next post
Up