Алгоритм створення EPUB

Sigil

У цій статті розглянуто послідовність дій для створення електронного файлу формату EPUB: коли він потрібен, які його технічні особливості та практичні варіанти створення — і детальний покроковий алгоритм як для пересічного користувача, так і для професійного програміста.

Коли і навіщо створюють epub

EPUB використовують для книг, довідників, навчальних матеріалів і довгих текстів, які мають бути доступні на різних рідерах — смартфонах, планшетах, електронних книжках. Формат дозволяє адаптувати текст під розмір екрану, зберігати метадані (автор, назва, обкладинка), робити інтерактивні елементи (в EPUB 3) і формувати зручну навігацію.

Особливості та переваги epub

  • Контейнер на базі ZIP з незмінним порядком і файлами: ключовий файл mimetype, метадані, маніфест і файли контенту.
  • Контент у вигляді XHTML/CSS — гнучка верстка та сумісність із веб-технологіями.
  • Підтримка мультимедіа та скриптів у EPUB 3, що дає змогу створювати інтерактивні підручники.
  • Можливість вбудовувати таблиці, зображення, SVG — корисно для технічної літератури.
  • Стандартизація метаданих (OPF) полегшує індексацію і пошук у бібліотеках.

Варіанти створення epub

Є три типовi підходи:

  • Графічні конвертори та редактори (для пересічного користувача): Calibre, Sigil, онлайн-сервіси.
  • Автоматизовані інструменти та скрипти (для авторів і видавництв): Pandoc, Sphinx, AsciiDoc → EPUB.
  • Ручна збірка та програмна генерація (для розробників): складання OPF/NCX, генерація XHTML, пакування ZIP з правильним mimetype.
<>

Алгоритм для пересічного користувача (швидко й без коду)

Підготовка матеріалів

Зберіть текст у DOCX або в Markdown, підготуйте обкладинку (JPEG/PNG) і таблицю вмісту у вигляді розділів.

Крок 1. Вибір інструмента

Встановіть Calibre або Sigil; або відкрийте один із онлайн-конверторів (наприклад, сайти-конвертери DOCX→EPUB).

Крок 2. Конвертація і базова правка

Імпортуйте файл у Calibre → «Конвертувати книги» → оберіть EPUB. Вкажіть метадані, завантажте обкладинку. У Sigil можна відредагувати XHTML вручну або через візуальний редактор.

Крок 3. Перевірка та тестування

Відкрийте отриманий EPUB у рідері або в Calibre viewer. Перевірте навігацію, розділи, відображення зображень і таблиць. При помилках — відредагуйте у Sigil або поверніться до джерела та повторно конвертуйте.

Крок 4. Фіналізація

Опишіть у метаданих мову, ISBN (за наявності), ліцензію. Збережіть фінальний файл та зробіть резервні копії.

Sigil

Алгоритм для професійного програміста (контроль і автоматизація)

Підхід і підготовка

Визначте версію стандарту (EPUB 2 чи EPUB 3). Для технічних та інтерактивних видань краще EPUB 3. Підготуйте: контент у Markdown/HTML, окремі файли для глав, зображення, стилі CSS, метадані у YAML чи JSON.

Крок 1. Генерація XHTML

Трансформуйте Markdown → XHTML за допомогою Pandoc або власного процесора (наприклад, на базі remark/markdown-it). Забезпечте коректну структуру: валідний DOCTYPE, charset, семантичні теги.

Крок 2. Формування OPF і маніфесту

Згенеруйте OPF-файл з метаданими, маніфестом (усі ресурси) і spine (послідовність). Для EPUB 3 додайте nav.xhtml для навігації замість NCX або як додаток.

Крок 3. Таблиця вмісту (NCX / nav)

Для EPUB 2 — створіть toc.ncx. Для EPUB 3 — nav.xhtml з семантичним списком розділів. Генерація може бути частиною CI/CD: скрипт обходить заголовки та формує навігацію.

Крок 4. Стилі та ресурси

Оптимізуйте CSS (медіа-запити, шрифти), підготуйте зображення (стиснення, WebP не скрізь підтримується — тримайте fallback). Вбудовані шрифти класифікуйте згідно ліцензії.

Крок 5. Пакування

Створіть ZIP-контейнер так, щоб файл mimetype був першим і не стиснутим, потім META-INF/container.xml та решта ресурсів. Можна використати утиліти: zip з відповідними прапорами або бібліотеки (ruby-epub, epubcheck utilities).

Крок 6. Валідaція та автоматичне тестування

Проганяйте через epubcheck. Додатково запускайте скрипти для перевірки внутрішніх посилань, відсутності помилок у XHTML та коректності UTF-8.

Крок 7. Інтеграція в pipeline

Додайте етапи в CI: збірка → валідатор → генерація прев’ю (конвертація в PDF/HTML для перегляду) → завантаження артефактів. Для великих видавництв — логіка версіонування і збірка локалізованих пакетів.

Практичні поради та типові помилки

  • Не залишайте непотрібні файли в маніфесті — epubcheck видасть помилку.
  • Перевіряйте кодування: усе має бути в UTF-8 без BOM.
  • Якщо потрібна сумісність зі старими рідерами — уникайте складних CSS-трюків і сучасних API EPUB 3.
  • Для багатомовних видань використовуйте атрибут xml:lang у відповідних XHTML-файлах.

Чекліст для швидкої збірки
1) Підготувати контент (XHTML/Markdown). 2) Обкладинка 1600×2560 px для високої якості. 3) Згенерувати OPF і nav. 4) Перевірити шляхи ресурсів. 5) Упакувати ZIP з незжатим mimetype. 6) Запустити epubcheck.

EPUB — це не просто контейнер для тексту; це стандарт для доступного та адаптивного видавництва. — Mike Hefner

Закінчити статтю варто відсилкою до практики: почніть з простого інструмента (Calibre або Pandoc) і з часом автоматизуйте збірку, якщо видаєте регулярно — це зекономить час і забезпечить контроль якості. Далі деякі корисні приклади кодів та вмісту файлів, які знадобляться під час створення Epub через Sigil.

Приклади файлів

Для EPUB потрібен файл OPF. Це XML-файл, який містить технічну інформацію про вміст книги. Зазвичай його називають content.opf.

 
  
  unique-identifier="BookId" 
version="2.0"> 
  
 Моя перша книга 
 Me 
 mybook123 
 2010-12-19 
  
  
  media-type="application/x-dtbncx+xml" /> 
  media-type="image/jpeg" /> 
  media-type="application/xhtml+xml" /> 
  media-type="text/css" /> 
  media-type="application/xhtml+xml" /> 
  
  
  
  
  
  
 

Файл 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. Структура цього файлу хоч і громіздка, але суть досить проста.

 
  
 "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd"> 
  version="2005-1"> 
  
  
  
  
 
  
 Моя перша книга 
  
  
  
  
 Обкладинка 
  
  
  
  
  
 Зміст 
  
  
  
  
  
 

У заголовку 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.

 
  
  xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> 
  
  media-type="application/oebps-package+xml" /> 
  
  
 

Все, всі необхідні файли ми зробили. У нас у каталозі проекту повинні бути:
- файл mimetype;
- каталог META-INF з файлом container.xml;
- каталог OPS с файлами: content.html, cover.html, style.css, cover.jpg, content.opf, toc.ncx.

Саме файл з розширенням epub є zip-архівом всіх цих файлів.

Правила архівації

По-перше, не можна просто запакувати кореневу папку, і сам архів ZIP не повинен бути зашифрований. По-друге, файл mimetype в архіві повинен бути не стиснутий.

Тестування

Отриману книгу завжди тестують. Для цього використовується спеціальна утиліта Adobe EpubCheck. Це кросплатформова консольна java-утиліта. Вона запускається наступним чином із командного рядка:

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

Якщо у файлі електронної книги є помилки синтаксису, то вона виведе їх опис, а також файл і рядок, в якому знаходиться ця помилка. Якщо ж помилок самого формату EPUB немає, то можна переглянути отриману книгу в браузері Firefox через чудове розширення EpubReader. Це вже потрібно зробити для перевірки помилок форматування та вичитування тексту щодо граматичних помилок.

Категорія: Практика | Переглядів: 133907 | Додав: arxweb | Рейтинг: 1.0/30
Усього коментарів: 0
Онлайн всього: 1
Гостей: 1
Користувачів: 0