Создаём электронную книгу с помощью pandoc

В статье рассмотрим пример создания "электрической книги" в формате EPUB с помощью конвертора текстовых файлов pandoc.

Pandoc - консольная программа-конвертер, которая может преобразовывать друг в друга форматы markdown, HTML, DocBook, LaTeX. Так же на выходе программы могут быть заданы форматы Microsoft Word DOCX, OpenOffice ODT, EPUB и др.

Нельзя сказать, чтобы утилита pandoc была нужной для всех. Но она может пригодиться в некоторых случаях. Например, рассмотрим случай, когда с помощью pandoc можно собрать файл электронной книги формата EPUB.

Как-то я нашёл в сети оцифрованную книгу А. Вагановой "Основы классического танца". Всё бы и хорошо, но цифровая версия была в формате doc размером 31 мегабайт. Открыть такой файл даже на ноутбуке в LibreOffice оказалось проблематично, не говоря уже о "читалке" на планшете.

Промежуточным решением проблемы стала конвертация через LibreOffice книги в формат HTML. Общий размер HTML-файла с картинками уменьшился в 10 раз до 3,2 мегабайт. Но в книге было много иллюстраций, и поученный результат конвертации в HTML представлял огромное количество файлов, с которыми неудобно было возиться.

Хорошим вариантом для размещения книги в личной цифровой библиотеке было перекодирование HTML-версии единый файл EPUB, являющийся стандартом для цифровых книг. Существует много способов создания EPUB-файла, но в данном случае утилита pandoc оказалась наиболее быстрым решением.

Утилита pandoc имеется в стандартных репозиториях Linux. Также на официальном сайте программы имеются версии для Windows и Mac OS.

Pandoc работает из командной строки. Чтобы конвертировать HTML-файл с картинками в файл формата EPUB, достаточно выполнить команду

pandoc mybook.html -o mybook.epub

И будет создан типовой простенький файл электронной книги с внедрёнными изображениями, который вполне подойдёт для личного чтения на практически любом ридере. Но pandoc гораздо более гибкая программа, и этот простенький файл можно немного улучшить, добавив в него обложку, а также дополнительную метаинформацию, которая будет полезна при работе с личной электронной библиотекой.

Обложка - это какой-нибудь графический файл, созданный в растровом редакторе картинок. Размером обложки-изображения в электронных книгах желательно должен быть не менее 600х800 пикселей. Эта картинка-обложка будет показываться, например, в виде иконки на виртуальных полках в программах-читалках.

Также не помешает внедрить в экземпляр электронной книги файл метаинформации metadata.xml. Это xml-файл с данными, в котором содержится техническая информация о нашей книге: общие сведения об издании, название, автор и т.д. Самый простой пример содержания такого файла:

<dc:title>Основы классического танца</dc:title>
<dc:creator opf:role="aut">Ваганова Агриппина</dc:creator>
<dc:language>ru</dc:language>

Дополнительные теги метаинформации можно посмотреть в онлайн-справочнике Dublin Core metadata elements.

И теперь при помощи этих файлов и дополнительных опций можно усовершенствовать наш EPUB-файл.

pandoc -S --epub-metadata=metadata.xml -o mybook.epub --epub-cover-image=cover.jpg mybook.html

Где cover.jpg - файл обложки, а опция -S преобразуют входной формат типографский правильный вывод.

После всех манипуляций из файла doc в 31 мегабайт у меня получился готовый файл EPUB 1,8 мегабайт. Удобно и практично.

И возможности pandoc по совершенствованию EPUB-файла на этом не заканчиваются. Например, можно вместо типовой таблицы стилей, которую внедряет pandoc в файл EPUB, внедрить при помощи опции --epub-stylesheet=FILE.css свою таблицу CSS. Соответственно можно при помощи опции --epub-embed-font внедрить в цифровую книгу собственные шрифты, определив в css-файле блок параметров этих шрифтов.

Но, несмотря на гибкие возможности создания EPUB-файлов, не следует ожидать от pandoc чудес вёрстки. Полученные с его помощью файлы подойдут для частного использования. Для создания электронных книг, предназначенных, для распространения, нужны более сложные инструменты.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!