Для гиков

EPUB изнутри

На самом деле EPUB — это ZIP-файл, сжатый особым образом. В этом легко убедиться: измените расширение любого файла .epub на .zip и разархивируйте его любым архиватором. Внутри этого архива вы обнаружите файлы содержимого книги (в формате XHTML), дополнительные файлы иллюстраций, шрифтов и т. д., и обязательные вспомогательные файлы, которые стандарт EPUB требует для описания книги. Можно считать, что EPUB — это веб-сайт, с некоторыми ограничениями и созданный по особым правилам.

Минимальный набор файлов, который входит в EPUB (речь о EPUB 2, пока самом распространённом, который с большей или меньшей гарантией будет прочитан любой программой или устройством, поддерживающим EPUB) , должен быть следующим:

.
├── mimetype
├── META-INF
│   └── container.xml
└── OEBPS
    ├── content.opf
    ├── toc.ncx
    ├── Text
    ├── Styles
    ├── Fonts
    ├── Images
    ├── Video
    ├── Audio
    └── Misc
  • файл mimetype, единственный файл внутри EPUB, который остаётся несжатым в составе архива, с одной единственной строчкой application/epub+zip,

  • папка META-INF с файлом container.xml, который указывает, где хранится содержимое книги,

  • папка OEBPS, в которой должны быть:

    • файл с метаданными книги, списком всех файлов, которые нужны для ее содержимого, описанием последовательности чтения файлов и путеводителем по ключевым файлам (обычно он называется content.opf ),
    • файл toc.ncx — техническое оглавление книги в том виде, в котором оно будет считано программой для чтения и показано пользователю не внутри книги, а при клике на соответствующую кнопке интерфейса,
    • файл stylesheet.css с описанием таблицы стилей для оформления текста (CSS-файлов может быть несколько, обычно их группируют в папку Styles),
    • собственно файлы содержимого, например, в папке Text,
    • папка с иллюстрациями Images, шрифтами Fonts и т. д.

    Ключевой файл content.opf

    Content.opf — главный файл EPUB, в котором хранятся метаданные книги, опись всего содержимого EPUB и определяет для программы чтения последовательность воспроизведения книги. Он состоит из трёх (EPUB3) или четырёх (EPUB2) разделов:

    <metadata>…</metadata> — метаданные (или выходные данные) книги в формате Dubline Core, то есть язык, название книги, :её автор, аннотация, идентификатор, название файла обложки:

<manifest>…</manifest> — полная опись файлов внутри EPUB:

    <manifest>
      <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
      <item id="cover.xhtml" href="Text/cover.xhtml" media-type="application/xhtml+xml"/>
    <item id="cover.jpg" href="Images/cover.jpg" media-type="image/jpeg"/>
      <item id="title.xhtml" href="Text/title.xhtml" media-type="application/xhtml+xml"/>
    <item id="text.xhtml" href="Text/text.xhtml" media-type="application/xhtml+xml"/>
      <item id="styles.css" href="Styles/styles.css" media-type="text/css"/>
  </manifest>

<spine>…</spine> — «корешок», то есть последовательность воспроизведения текстовых файлов:

<spine toc="ncx">
    <itemref idref="cover.xhtml"/>
    <itemref idref="title.xhtml"/>
    <itemref idref="text.xhtml"/>
  </spine>

<guide>…</guide> — «путеводитель по книге», то есть описание назначения ключевых текстовых файлов:

  <guide>
    <reference type="cover" title="Cover" href="Text/cover.xhtml"/>
    <reference type="title-page" title="Title Page" href="Text/title.xhtml"/>
    <reference type="text" title="Text" href="Text/text.xhtml"/>
  </guide>
</package>

EPUB для продвинутых пользователей

Программисту и гику разобраться в том, что такое EPUB, будет совсем несложно. Достаточно ознакомиться со спецификацией формата на сайте W3Consortium. Советуем, однако, прочитать краткие руководства, написанные известным специалистом по EPUB Лайзой Дейли о формате EPUB 2 Build a digital book with EPUB» и EPUB 3 «Create rich-layout publications in EPUB 3 with HTML5, CSS3, and MathML». Руководства предназначены в первую очередь для тех, кто знает, что такое XHTML и CSS и как ими пользоваться. Они будут полезны и тем, кто не хочет разбираться в тонкостях XML, но может столкнуться, к примеру, с проблемами при конвертации файлов верстки в EPUB. Если же информации вам недостаточно, то рекомендуем вам книги Джарета Бьюза «EPUB From the Ground Up: A Hands-On Guide to EPUB 2 and EPUB 3», Лизы Кастро «EPUB: Straight to the Point», «From InDesign CS 5.5 to EPUB and Kindle», Пэрайи Бёрка «Epublishing with InDesign», а также книгу Мэтта Гарриша и Маркуса Гиллинга «EPUB 3 Best Practices».

Теперь, если вы смогли дочитать это руководство до конца, то вы и в самом деле можете открыть текстовый редактор, создать все эти файлы, например, в директории MY-EBOOK. Имейте в виду, что размер каждого текстового файла в EPUB 2 не должен превышать 260 Кб. (Этого ограничения уже нет в EPUB 3, однако свои ограничения накладывают платформы для дистрибуции.) Вся книга может быть практически любого размера, но состоять она должна из отдельных частей.

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

$ zip -0Xq my-book.epub mimetype
$ zip -Xr9Dq my-book.epub

(То же самое можно сделать с помощью утилиты ePub Zip/Unzip или eCanCrusher.) На выходе у вас получится файл электронной книги my-book.epub. Не забудьте проверить его — с помощью утилиты epubcheck, EPUB-checker или воспользовавшись онлайновым валидатором IDPF. Кроме того, вы можете воспользоваться онлайновым сервисом FlightDeck, чтобы узнать, как можно улучшить вашу книгу (с технической точки зрения, естественно).

Готово!

Для тех, кто всё это смог сделать, рекомендуем, чтобы не мучиться с обычными текстовыми редакторами, использовать для производства EPUB-файлов специализированными редакторами — Sigil, BBEdit или oXygen XML Author. Самый удобный из них — редактор Sigil, позволяющий с нуля сделать EPUB 2 (и 3) или отредактировать его. Создавая EPUB, Sigil — на основе стандартного шаблона — генерирует базовую структуру EPUB. Все изменения файлов контента (добавление или удаление текстовых файлов, файлов шрифтов и т. д.) Sigil автоматически вносит изменения в content.opf и toc.ncx, избавляя от большого объёма ручной работы.

Все эти редакторы, конечно, не идеальны. Sigil не слишком устойчив в работе, не всегда корректно отображает шрифты и т. д. BBEdit умеет открывать, редактировать и корректно сохранять EPUB, но не умеет автоматически исправлять состав manifest внутри content.opf. Редактор oXygen XML Author — вариант программы oXygen XML Editor, мощного XML-редактора, предназначенного для работы со структурированными данными индустриальных масштабов. Это и его минус — для вёрстки электронных книг его функции избыточны, а в настройках легко разберется только профессионал в XML.

Для дизайнеров книг более привычным, скорее всего, окажется создание EPUB не в специализированном редакторе, а в привычной и знакомой программе вёрстки InDesign. Подробнее об этом читайте дальше. Впрочем, без редактора, скорее всего, не обойтись при доведении EPUB, конвертированного в InDesign, до кондиции.