Информационные технологии. Теория и практика

Интернет-технологии для бизнеса, учебы, жизни. Создание, управление, хранение, передача и обработка информации. Интернет-новости, обзоры. Психология интернета. Работа и заработок в сети.

Алгоритм создания EPUB

EPUB - это открытый стандарт электронных книг, использующий открытые текстовые стандарты XML, CSS и XHTML. Инструмент для работы - простой редактор текста: "Блокнот" Windows с поддержкой сохранения в UTF-8 или NotePad++ или SubLime Text 2. Любой графический растровый редактор для создания и редактирования кар-тинок. В зависимости от художественных способностей может подойти и простой Paint Windows. Также понадобится утилита архивирования zip. Для тестирования подойдёт браузер Firefox и расширение EpubReader. Для полного тестирования нам понадобится интерпретатор Java версии не ниже 1.5 и утилита Adobe EpubCheck (code.google.com/p/epubcheck). Из необходимых знаний нужно иметь хоть небольшие навыки работы с HTML.

Общая структура

Обычная бумажная книга состоит из красочной обложки, страницы с общей технической информацией об издании, оглавления и непосредственно содержания. Дополнительно можно сюда добавить иллюстрации. То же требуется и для электронного варианта, начиная с обложки и заканчивая содержанием. В электронной книге всё это делается в виде файлов xml, html, css и файлов изображений. А собственно сама книга представляет собой zip-архив всех этих файлов. Вот все эти файлы по порядку и создадим.

1) Содержание

Содержание электронной книги EPUB выполним в размётке XHTML. Также в формате EPUB может использоваться стандарт кодирования книг для людей со слабым зрением DTBook и формат PDF. Но мы будем использовать только XHTML. Размётка текста XHTML - это строгий HTML без вольностей. В файлах XHTML должно быть только логическое форматирование, все теги должны быть закрытым. Кодировка текста - UTF8. А форматирование визуального вида выносится в файл каскадных таблиц стилей CSS.

Создадим каталог проекта, который будет корневым для нашей электронной книги. В этом корневом каталоге создадим папку OPS, в которой и расположим файлы содержания книги. Для начала создадим здесь файл содержания content.html. Это обычный xhtml-файл с привычными для веб-кодеров тегами.



 Моя первая книга
 


 

Моя первая книга

2) Обложка

В качестве обложки создадим файл cover.html в этой же папке OPS. Здесь напишем то же, что и пишут на обложках обычных книг - название книги. Дополнительно в этом же каталоге в растровом редакторе картинок подготовим графическую обложку в виде файла изображения cover.jpg. Обычным размером обложки-изображения в электронных книгах является 600х800. Эта картинка-обложка будет показываться, например, в виде иконки на виртуальных полках в программах-читалках, что очень удобно.

3) Форматирование

Форматирование текста - шрифт, размер и всё такое - нужно вынести в от-дельный файл CSS. Поэтому создаём файл style.css опять же в каталоге OPS.

4) Метаинформация

Для формата EPUB необходим специальный файл OPF. Это XML-файл, в котором содержится техническая информация о нашей книге: общие сведения об издании, перечисление всех входящих в данную книгу файлов, а также "переплёт".

Обычно этот файл называют content.opf. Создадим его. А ниже приведём необходимые комментарии.



  
 Моя первая книга
 Me
 mybook123
 2010-12-19
 
 
 
 
 
 
 
 
 
 
 
 
 

Файл content.opf состоит из нескольких разделов. Раздел metadata содержит выходные данные издания. Обязательными являются название (dc:title) и идентификатор (dc:identifier). Сюда включают информацию об авторе, дате выпуска, аннотацию, язык, издателя, информацию об авторских правах. Заметим, что значение атрибута id элемента dc:identifier должно совпадать с атрибутом unique-identifier элемента. В качестве самого элемента dc:identifier издатели, как правило, указывают ISBN или каталожный номер Библиотеки Конгресса. Но можно использовать URL или идентификатор, сгенерированный случайным образом.

Раздел manifest содержит список всех файлов-ресурсов нашей конкретной книги. Каждый файл, который входит в цифровую книгу, должен быть указан в манифесте кроме самого файла OPF.

Раздел spine - это так называемый переплет нашей книги. Здесь указан порядок и последовательность чтения файлов содержания сверху-вниз для программ-читалок. Но это ещё не оглавление книги. В качестве ссылок на файлы, в разделе spine используются не прямые ссылки на файл, а идентификаторы этих файлов из раздела manifest.

5) Оглавление

Оглавление в книге формата EPUB делается в виде отдельного файла, имеющего обычно название toc.nxc. Расположим его опять-таки в каталоге OPS. Структура этого файла хотя и громоздкая, но суть довольно проста.




 
 
 
 
 
 
 
 Моя первая книга
 
 
 
 
 Обложка
 
 
 
 
 
 Содержание
 
 
 
 

В заголовке head элемент uid должен соответствовать идентификатору dc:identifier файла OPF. Элемент depth: отражает уровень иерархии оглавления. В данном примере уровень всего один, и у нас это значение равно 1. Содержание элемента docTitle/text должно совпадать со значением dc:title OPF. Раздел navMap определяет оглавление книги. В этом разделе каждый элемент оглавления navPoint содержит атрибут порядкового номера playOrder, а также элементы названий и ссылку на физический файл.

6) Дополнительные данные

Итак, все файлы содержания книги мы сделали. Осталось подготовить два файла, необходимых непосредственно формату EPUB. Сначала в корневом каталоге проекта сделаем файл с названием mimetype без расширения. Содержимое этого файла - всего одна строчка, и файл mimetype не должен содержать никаких символов перевода строки или возврата каретки:

application/epub+zip

Потом сделаем папку META-INF, содержащей файл с именем container.xml. Этот файл всего лишь указывает, где находится наш главный файл метадан-ных книги content.opf.



 
 
 

7) Сборка

Всё, все необходимые файлы мы сделали. У нас в каталоге проекта должны находиться:

- файл mimetype;
- каталог META-INF с файлом container.xml;
- каталог OPS с файлами: content.html, cover.html, style.css, cover.jpg, content.opf и toc.ncx.

Непосредственно сам файл с расширением epup является zip-архивом всех этих файлов.

Правила архивации:

Во-первых, нельзя просто упаковать корневую папку, и сам архив ZIP не должен быть зашифрован. Во-вторых, файл mimetype в архиве должен быть не сжат.

8) Тестирование

Полученную книгу всегда тестируют. Для этого используется специальная утилита Adobe EpubCheck. Это кроссплатформенная консольная java-утилита. Она запускается следующим образом из командной строки:

java -jar /path-to/epubcheck.jar mybook.epub

Если в файле электронной книги имеются ошибки синтаксиса, то она выве-дет их описание, а также файл и строку, в которой находится эта ошибка. Если же ошибок самого формата EPUB нет, то можно просмотреть получен-ную книгу в браузере Firefox через замечательное расширение EpubReader. Это уже нужно сделать для проверки ошибок форматирования и вычитки текста на предмет грамматических ошибок.