Тут не так давно я уже упоминал, что из DocBook можно делать, в том числе, и EPUB. Однако процесс не вполне тривиальный; мне кажется, его стоит расписать несколько подробнее.
Вот тут в IBM DeveloperWorks описан такой процесс. Однако изготовленный по этому рецепту файл будет обладать парой недостатков:
-
Это будет файл устаревшего формата «Open Epub»;
-
В нём не будет внедрённых шрифтов.
Такой файл благополучно открывается чем-нибудь типа Okular. Однако AdobeViewer на читалках типа PocketBook 301+ в таких файлах показывает русские буквы вопросиками. Это происходит из-за того, что встроенного шрифта в файле нет, AdobeViewer пытается использовать шрифт по умолчанию, а в нём нет русских букв.
Так что будем делать «более правильный» EPUB. «Нормальный» EPUB-файл — это zip-архив, в котором содержатся следующие вещи:
-
Файл с именем «mimetype»; этот файл обязательно должен идти первым в архиве, не должен быть сжат, и его содержимым должна быть строка «application/epub+zip» (без символа новой строки в конце).
-
Директория с именем «META-INF»; в ней — файл container.xml. Примеры содержимого этого файла можно нагуглить, главное что в нём должно быть прописано — ссылка на файл contents.opf (OPS/contents.opf).
-
Директория с именем «OPS»; В ней — HTML-файлы с собственно содержимым книги, картинки к ним, шрифты (файлы *.ttf), и файл contents.opf и таблица стилей CSS.
Для того, чтобы сделать такой файл из имеющегося DocBook-файла book.xml, нужно проделать следующее:
-
Выполнить команду вида:
xsltproc --stringparam epub.oebps.dir OPS/ \
--stringparam epub.embedded.font Ubuntu-R.ttf \
--stringparam html.stylesheet style.css /usr/share/xml/docbook/stylesheet/docbook-xsl/epub/docbook.xsl \
book.xmlЗдесь вместо «Ubuntu-R.ttf» можете указать какое-нибудь другое имя шрифтового файла. Путь к epub/docbook.xsl на вашей системе может быть и другим, подставьте ваш. Эта команда создаст директори META-INF и OPS в текущей директории.
-
Скопировать откуда-нибудь или написать таблицу стилей OPS/style.css. Стили можно настраивать на ваш вкус, но надо учитывать следующее:
-
Если вы предполагаете, что документ будут читать на E-Ink устройстве, то не делайте слишком сложную цветовую гамму; экран мало того что чёрно-белый, так ещё не очень хорошо показывает тонкие оттенки. Идеально было бы обойтись 4мя или 8ю оттенками серого (включая чёрный и белый).
-
В таблице должны быть правила, указывающие конкретные шрифты, наподобие следующих:
@font-face {
font-family: "Ubuntu";
font-style: normal;
font-weight: normal;
src: url(Ubuntu-R.ttf)
}
@font-face {
font-family: "Ubuntu";
font-style: normal;
font-weight: bold;
src: url(Ubuntu-B.ttf)
}
@font-face {
font-family: "Ubuntu";
font-style: italic;
font-weight: normal;
src: url(Ubuntu-I.ttf)
}
@font-face {
font-family: "Ubuntu";
font-style: italic;
font-weight: bold;
src: url(Ubuntu-BI.ttf)
}
@font-face {
font-family: "DroidSansMono", monospace;
font-style: normal;
font-weight: normal;
src: url(DroidSansMono.ttf)
}
pre {
white-space: pre-wrap;
font-family: "DroidSansMono", monospace;
font-size: 85%;
}(имена шрифтов, конечно, укажите ваши).
-
-
Скопировать откуда-нибудь файлы шрифтов (*.ttf) в директорию OPS/.
-
Исправить файл OPS/content.opf, добавив туда ссылки на шрифты. Это делается строчками вида:
<item id="font2" href="Ubuntu-I.ttf" type="application/x-font-ttf"/>в разделе
для каждого файла шрифта. Значения параметра id ни на что не влияют и могут быть любыми, лишь бы не повторялись. -
Собрать собственно EPUB-файл командами вида
$ echo "application/epub+zip" > mimetype
$ zip -0Xq my-book.epub mimetype
$ zip -Xr9D my-book.epub META-INF OPS -
(Опционально) Проверить получившийся файл при помощи программы epubcheck командой вида
java -jar epubcheck.jar my-book.epub
Получившийся файл my-book.epub должен нормально читаться как на компьютере, так и на книгочиталках.
Комментариев нет:
Отправить комментарий