Создаем книгу в формате EPUB. 21.by

Создаем книгу в формате EPUB

24.12.2010 — Новости Hi-Tech |  
Размер текста:
A
A
A

Источник материала:

В этой статье познакомимся в пошаговом режиме с практикой создания простого экземпляра электронной книги в формате EPUB.


Скориновские традиции

На страницах "КВ" темам о цифровых книгах и оцифровке изданий, как могли заметить постоянные читатели, уделяется много внимания. Возможно, это в какой-то степени неосознанная дань истории. Ведь именно у нас в Беларуси когда-то родился первопечатник и основатель восточнославянского книгопечатания Франциск Скорина.

В этом году мы уже прошли общее знакомство с форматом электронных книг EPUB. На страницах газеты мы также увидели возможности некоторых программных читалок этого формата для платформы "Андроид". А эта статья является практическим примером пошагового создания самой простой версии книги в формате EPUB без защиты контента.

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


Инструменты и навыки

EPUB - это открытый стандарт электронных книг, использующий открытые текстовые стандарты XML, CSS и XHTML. Соответственно главным инструментом для работы у нас будет простой редактор текста. Подойдёт даже "Блокнот" Windows с поддержкой сохранения в UTF-8.

Ещё понадобится любой графический растровый редактор для создания и редактирования картинок. В зависимости от художественных способностей может подойти и простой Paint Windows.

Также понадобится утилита архивирования zip. Например, в Linux-системах она имеется по умолчанию.

Для тестирования подойдёт браузер Firefox и расширение EpubReader. Для полного тестирования нам понадобится интерпретатор Java версии не ниже 1.5 и утилита Adobe EpubCheck (code.google.com/p/epubcheck).

Из необходимых знаний нужно иметь хоть небольшие навыки работы с HTML. Думаю, для всех, кто хотя бы баловался созданием html-страничек, проблемы с форматом не будет.


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

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

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


Делай раз. Содержание

В основном содержание электронной книги EPUB делается в размётке XHTML. Также в формате EPUB может использоваться стандарт кодирования книг для людей со слабым зрением DTBook и формат PDF. Но мы будем использовать только XHTML.

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

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

<html xmlns="http://www.w3.org/1999/xhtml"> <head>  <title>Моя первая книга</title>  <link rel="stylesheet" href="style.css" type="text/css" /> </head> <body>  <h1>Моя первая книга</h1>  <!- Какой-нибудь контент -> </body> </html>


Делай два. Обложка

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

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


Делай три. Форматирование

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

h1 {color: Blue}


Делай четыре. Метаинформация

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

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

<?xml version="1.0" encoding="UTF-8"?> <package xmlns="http://www.idpf.org/2007/opf"   unique-identifier="BookId" version="2.0">  <metadata xmlns:dc="http://purl.org/dc/elements/1.1/"    xmlns:dcterms="http://purl.org/dc/terms/"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:opf="http://www.idpf.org/2007/opf">    <dc:title>Моя первая книга</dc:title>   <dc:creator>Me</dc:creator>   <dc:identifier id="BookId">mybook123</dc:identifier>   <dc:date>2010-12-19</dc:date>   <meta name="cover" content="cover-image"/>  </metadata>  <manifest>   <item id="toc" href="toc.ncx"    media-type="application/x-dtbncx+xml" />   <item id="cover-image" href="cover.jpg"    media-type="image/jpeg" />   <item id="cover" href="cover.html"    media-type="application/xhtml+xml" />   <item id="style" href="style.css"    media-type="text/css" />   <item id="content" href="content.html"    media-type="application/xhtml+xml" />  </manifest>  <spine toc="toc">   <itemref idref="cover" linear="no" />   <itemref idref="content" />  </spine> </package>

Файл content.opf состоит из нескольких разделов. Раздел metadata содержит выходные данные издания. Обязательными являются название (dc:title) и идентификатор (dc:identifier). Но сюда включают информацию об авторе, дате выпуска, аннотацию, язык, издателя, информацию об авторских правах.

Заметим, что значение атрибута id элемента dc:identifier должно совпадать с атрибутом unique-identifier элемента. В качестве самого элемента dc:identifier издатели, как правило, указывают ISBN или каталожный номер Библиотеки Конгресса. Но можно использовать URL или идентификатор, сгенерированный случайным образом.

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

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

В качестве ссылок на файлы, как видите, в разделе spine используются не прямые ссылки на файл, а идентификаторы этих файлов из раздела manifest.


Делай пять. Оглавление

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

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"  "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/"  version="2005-1">  <head>   <meta name="dtb:uid" content="mybook123"/>   <meta name="dtb:depth" content="1"/>   <meta name="dtb:totalPageCount" content="0"/>   <meta name="dtb:maxPageNumber" content="0"/>  </head>  <docTitle>   <text>Моя первая книга</text>  </docTitle>  <navMap>   <navPoint id="point-1" playOrder="1">    <navLabel>     <text>Обложка</text>    </navLabel>    <content src="cover.html"/>   </navPoint>   <navPoint id="point-2" playOrder="2">    <navLabel>     <text>Содержание</text>    </navLabel>    <content src="content.html"/>   </navPoint>  </navMap> </ncx>

В заголовке head элемент uid должен соответствовать идентификатору dc:identifier файла OPF. Элемент depth: отражает уровень иерархии оглавления. В данном примере уровень всего один, и у нас это значение равно 1.

Содержание элемента docTitle/text должно совпадать со значением dc:title OPF.

Раздел navMap определяет оглавление книги. В этом разделе каждый элемент оглавления navPoint содержит атрибут порядкового номера playOrder, а также элементы названий и ссылку на физический файл.


Делай шесть. Дополнительные данные

Итак, все файлы содержания книги мы сделали. Осталось подготовить два файла, необходимых непосредственно формату EPUB.

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

application/epub+zip

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

<?xml version="1.0"?> <container version="1.0"   xmlns="urn:oasis:names:tc:opendocument:xmlns:container">  <rootfiles>   <rootfile full-path="OPS/content.opf"    media-type="application/oebps-package+xml" />  </rootfiles> </container>


Делай семь. Сборка

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

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

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

Процесс архивирования в zip-архив я даю для системы Linux, где имеется консольная команда zip. Заходим в консоли в наш корневой каталог проекта и делаем следующую команду:

zip -0Xq mybook.epub mimetype

После чего в появившийся файл mybook.epub добавляем все остальные файлы нашего проекта:

zip -Xr9Dq mybook.epub *

Вот практически и всё, теперь мы имеем полностью готовую книгу в виде файла mybook.epub


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

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

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

Если в файле электронной книги имеются ошибки синтаксиса, то она выведет их описание, а также файл и строку, в которой находится эта ошибка.

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

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

 
Теги: знакомства
 
 
Чтобы разместить новость на сайте или в блоге скопируйте код:
На вашем ресурсе это будет выглядеть так
Познакомимся в пошаговом режиме с практикой создания простого экземпляра электронной книги
 
 
 

РЕКЛАМА

Архив (Новости Hi-Tech)

РЕКЛАМА


Яндекс.Метрика