HTML в EPUB: конвертация без потери структуры
- Pandoc — лучший бесплатный конвертер: команда из трёх строк и поддержка CSS, MathML и метаданных.
- Онлайн-конвертер HTML в EPUB на нашем сайте справляется за 10 секунд, не требует установки и сохраняет структуру.
- Без указания языка (lang) и заголовков (h1…h6) EPUB не проходит валидацию — ридеры могут аварийно закрывать книгу.
- Изображения в HTML должны быть с абсолютными путями или встроены как base64, иначе EPUB теряет картинки.
- EPUB — это ZIP-архив с XHTML и CSS: внутренняя структура жёстко задана, любое отклонение ломает навигацию.
- Что такое EPUB и чем он отличается от HTML
- Способ 1: Конвертация через Pandoc (командная строка)
- Способ 2: Онлайн-конвертер без установки
- Способ 3: Ручная сборка EPUB (для контроля)
- Подводные камни: что ломает конвертацию
- Частные случаи: что делать с разметкой и CSS
- Сравнение инструментов конвертации
- Автоматизация и батчи: как конвертировать пачкой
Что такое EPUB и чем он отличается от HTML
EPUB — открытый формат электронных книг, основанный на XHTML, CSS и XML. В отличие от HTML-страницы, EPUB — это ZIP-архив со строгой структурой:
- META-INF/container.xml — указание на корневой файл;
- OEBPS/content.opf — метаданные (автор, название, язык) и манифест всех файлов;
- OEBPS/toc.ncx — оглавление;
- OEBPS/Text/ — XHTML-файлы с контентом;
- OEBPS/Styles/ — CSS;
- OEBPS/Images/ — изображения.
При конвертации HTML в EPUB нужно не просто переименовать файл, а упаковать его в эту структуру. Если вы возьмёте сырой HTML и просто смените расширение на .epub, ни один ридер его не откроет.
Ключевое отличие: EPUB — это набор строго оформленных XHTML-документов, сжатых в ZIP с предопределённой иерархией папок.
Способ 1: Конвертация через Pandoc (командная строка)
Pandoc — самый мощный бесплатный конвертер, работающий на Windows, macOS и Linux. Установите его по инструкции с официального сайта. Базовая команда:
pandoc input.html -o output.epubНо для качественного результата добавьте опции:
pandoc input.html \
--metadata title="Моя книга" \
--metadata author="Иван Иванов" \
--metadata lang="ru-RU" \
--epub-cover-image=cover.jpg \
--css=style.css \
-o output.epubОписание ключевых параметров:
| Параметр | Назначение | Пример |
|---|---|---|
| --metadata title | Заголовок книги | "Моя книга" |
| --metadata author | Автор | "Иван Иванов" |
| --metadata lang | Язык (код BCP 47) | "ru-RU" |
| --epub-cover-image | Путь к обложке | cover.jpg |
| --css | Путь к CSS-файлу | style.css |
Важно! Если ваш HTML содержит ссылки на локальные изображения (например, <img src="images/photo.png">), Pandoc автоматически включит их в EPUB. Абсолютные пути (C:\\ или http://) не работают — используйте относительные.
Способ 2: Онлайн-конвертер без установки
Если не хотите возиться с командной строкой, используйте HTML в EPUB на нашем сайте. Он подходит для небольших файлов (до 50 МБ) и не требует регистрации. Просто загрузите HTML-файл или вставьте код в текстовое поле — через 10 секунд получите готовый EPUB.
Алгоритм работы:
- Загрузите HTML-файл или вставьте код;
- (Опционально) Загрузите CSS и изображения;
- Укажите метаданные (название, автор, язык);
- Нажмите «Конвертировать» — скачайте EPUB.
Конвертер автоматически добавляет обложку (если не загружена — берёт первый скриншот), генерирует оглавление по заголовкам h1-h3 и применяет CSS. Поддерживаются кириллица, таблицы, списки и MathML.
После конвертации можете дополнительно преобразовать EPUB в другие форматы: EPUB в PDF, EPUB в FB2 или EPUB в TXT.
Онлайн-конвертер не сохраняет данные на сервере — все файлы удаляются через час. Для приватных документов используйте Pandoc локально.
Способ 3: Ручная сборка EPUB (для контроля)
Если нужен полный контроль над структурой, соберите EPUB вручную. Создайте папку с именем книги, внутри — папки META-INF и OEBPS. В META-INF поместите container.xml:
<?xml version="1.0" encoding="UTF-8"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
</rootfiles>
</container>В OEBPS создайте content.opf — мозг EPUB:
<package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="BookId">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title>Моя книга</dc:title>
<dc:creator>Иван Иванов</dc:creator>
<dc:language>ru-RU</dc:language>
</metadata>
<manifest>
<item id="chapter1" href="Text/chapter1.xhtml" media-type="application/xhtml+xml"/>
<item id="style" href="Styles/style.css" media-type="text/css"/>
</manifest>
<spine toc="ncx">
<itemref idref="chapter1"/>
</spine>
</package>Создайте toc.ncx для оглавления, XHTML-файлы в папке Text, CSS в Styles. Затем запакуйте всё в ZIP с расширением .epub. Проверьте валидацию через W3C EPUB Validator.
- 1Подготовка HTML
Проверьте корректность HTML5: закройте теги, добавьте DOCTYPE, lang. Удалите скрипты и iframe.
- 2Настройка метаданных
Укажите название, автора, язык. Без этого EPUB не пройдёт валидацию.
- 3Выбор инструмента
Pandoc для гибкости, онлайн-конвертер для простоты, ручная сборка для контроля.
- 4Конвертация
Запустите команду Pandoc или загрузите файл в онлайн-конвертер. Дождитесь завершения.
- 5Валидация EPUB
Используйте validator.w3.org или встроенную проверку онлайн-конвертера. Исправьте ошибки.
- 6Тестирование на ридерах
Откройте на Kindle, PocketBook и Apple Books — проверьте отображение и оглавление.
Подводные камни: что ломает конвертацию
Вот типичные ошибки, из-за которых EPUB не открывается или выглядит нечитаемо:
- Отсутствует язык в метаданных — ридер Kindle может показывать битые символы. Всегда указывайте
lang="ru-RU". - Неверные пути к изображениям — используйте относительные пути (например,
Images/photo.jpg), иначе картинки не отобразятся. - Слишком широкая вёрстка — EPUB адаптируется под экран; фиксированная ширина в пикселях (например,
width: 1200px) ломает чтение. Используйте относительные единицы. - Скрипты и iframe — EPUB не поддерживает JavaScript и встроенные фреймы. Удалите их перед конвертацией.
- Таблицы без thead — некоторые ридеры (PocketBook) неправильно отображают таблицы без явных
<thead>и<tbody>.
Как отладить: откройте EPUB в браузере (Chrome — просто перетащите файл) — если отображается нормально, проблема в ридере. Используйте валидатор W3C: он укажет на ошибки в XML-структуре.
Перед публикацией всегда тестируйте на двух-трёх ридерах (Kindle, PocketBook, Apple Books) — они по-разному интерпретируют CSS.
✅ Чеклист: готовы ли вы публиковать EPUB?
0 из 10
Частные случаи: что делать с разметкой и CSS
Разберём сложные сценарии конвертации:
1. Математические формулы. Pandoc поддерживает MathML: вставьте формулу в HTML как <math>... или используйте синтаксис LaTeX внутри $...$ (Pandoc сам преобразует). Если конвертер не поддерживает MathML, формулы потеряются — используйте изображения.
2. Сноски и ссылки. Pandoc преобразует <a href="#fn1"> в корректные сноски EPUB. В онлайн-конвертере сноски тоже работают, если внутри <ol> с class="footnotes".
3. Много файлов. Если у вас несколько HTML-страниц (главы), Pandoc может обработать список:
pandoc chapter1.html chapter2.html -o book.epubОн объединит их в один EPUB, сохранив последовательность. Для разделения на главы используйте заголовки h1 — каждый h1 станет новой главой.
4. CSS-стили. Не все CSS-свойства поддерживаются в EPUB. Избегайте:
- position: fixed / absolute;
- overflow: hidden;
- z-index;
- float (некорректно в некоторых ридерах).
Безопасные: font-size, color, margin, padding, line-height, text-align. Лучше использовать встроенные стили или отдельный CSS, указанный в content.opf.
Сравнение инструментов конвертации
В таблице — сравнение трёх основных методов конвертации HTML в EPUB по критериям, важным для разработчика.
| Критерий | Pandoc | Онлайн-конвертер | Ручная сборка |
|---|---|---|---|
| Сложность | Средняя (CLI) | Низкая (UI) | Высокая (ручное редактирование XML) |
| Качество | Отличное (гибкие настройки) | Хорошее (автоматика) | Полный контроль |
| Поддержка CSS | Полная | Базовая (до 10 стилей) | Полная |
| Изображения | Автоматически | Загрузка отдельно | Вручную |
| Размер файла | Любой | До 50 МБ | Любой |
| Валидация | Нет встроенной | Автоматическая | Самостоятельно |
Вывод: для быстрой конвертации используйте HTML в EPUB онлайн, для частых задач — Pandoc, для единоразовой сложной книги — ручную сборку.
Автоматизация и батчи: как конвертировать пачкой
Если у вас десятки HTML-файлов, автоматизируйте процесс с помощью скрипта. Пример для bash (Linux/macOS):
for f in *.html; do
pandoc "$f" -o "${f%.html}.epub" \
--metadata title="${f%.html}" \
--metadata lang="ru-RU"
doneДля Windows PowerShell:
Get-ChildItem -Filter *.html | ForEach-Object {
pandoc $_.FullName -o ($_.BaseName + ".epub") \
--metadata title=$($_.BaseName) \
--metadata lang="ru-RU"
}Если нужно объединить все файлы в одну книгу:
pandoc *.html -o combined.epub \
--metadata title="Сборник" \
--metadata author="Коллектив"Важно: порядок глав — по алфавиту файлов. Переименуйте файлы с числовым префиксом: 01-chapter.html, 02-chapter.html и т.д.
Для тех, кому нужно конвертировать EPUB в другой формат (например, для FB2-ридера), используйте наши инструменты: EPUB в FB2 или EPUB в TXT.
🧮 Посчитайте сами — инструменты по теме
🧭 Разделы по теме
Частые вопросы
Можно ли конвертировать HTML в EPUB онлайн бесплатно?
Да, на нашем сайте есть бесплатный онлайн-конвертер «HTML в EPUB» — без регистрации, с поддержкой файлов до 50 МБ. Результат приходит в течение 10 секунд.
Как добавить обложку в EPUB при конвертации из HTML?
В Pandoc используйте флаг --epub-cover-image=cover.jpg. В онлайн-конвертере загрузите изображение отдельно. Если обложка не указана, конвертер автоматически создаст её из первого заголовка.
Что делать, если после конвертации пропали картинки?
Проверьте пути к изображениям: они должны быть относительными (например, images/photo.png), а не абсолютными. В онлайн-конвертере загрузите изображения вместе с HTML. В ручной сборке укажите изображения в манифесте content.opf.
Как конвертировать HTML в EPUB с сохранением стилей?
Pandoc поддерживает CSS через флаг --css=style.css. Все стили, совместимые с EPUB (без position: fixed и overflow), будут применены. Онлайн-конвертер использует ваш CSS, если он загружен.
Чем отличается EPUB 2 от EPUB 3?
EPUB 3 поддерживает MathML, SVG и более сложные стили, но менее совместим со старыми ридерами (Kindle до 2020). Для большинства задач подходит EPUB 2. Pandoc создаёт EPUB 3 по умолчанию, онлайн-конвертер — EPUB 2.
Можно ли конвертировать много HTML-файлов в один EPUB?
Да, Pandoc позволяет передать несколько файлов в одной команде: pandoc 1.html 2.html -o book.epub. Он объединит их в одну книгу. Порядок определяется порядком файлов в команде.
Как проверить, что EPUB не содержит ошибок?
Используйте официальный валидатор W3C (https://validator.w3.org/). Загрузите файл — он покажет все ошибки XML и структуры. В онлайн-конвертере встроена автоматическая валидация.
Как конвертировать HTML в EPUB для Kindle?
Kindle поддерживает EPUB только через конвертацию в AZW3 или MOBI. Используйте Pandoc с флагом -t epub3 или конвертер «EPUB в MOBI» после получения EPUB. Также можно сразу использовать HTML в EPUB, а затем применить формат-конвертер.
Источники и нормативные документы
- Pandoc manual: EPUB output
- W3C EPUB Validator
- MDN: EPUB overview