Файл FB2, который отказывается открываться в читалке, почти всегда содержит ошибку в XML-разметке — незакрытый тег, неверную кодировку или отсутствующий обязательный блок <description>. Формат FB2 (FictionBook) — это, по сути, обычный XML-документ, и создать его можно тремя путями: вручную в текстовом редакторе, через специализированный редактор или конвертацией из DOCX/EPUB.
Ниже разберём структуру формата, рабочие инструменты и типичные ошибки, из-за которых книга не проходит валидацию. Статья подойдёт и тем, кто собирает собственную книгу для личной библиотеки, и тем, кто готовит файл к публикации.
Что представляет собой формат FB2
FB2 хранит текст книги вместе с метаданными в одном XML-файле. Кодировка — UTF-8 или windows-1251, изображения (обложка, иллюстрации) встраиваются прямо в файл в виде Base64-данных. За счёт этого книга остаётся единым документом, который удобно хранить и передавать.
Корневой элемент документа — <FictionBook>. Внутри него располагаются обязательные блоки: <description> с метаданными и один или несколько <body> с текстом книги. Дополнительно могут присутствовать блоки <binary> с картинками.
Структура файла: обязательные элементы
Минимальный каркас книги выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0">
<description>
<title-info>
<author><first-name>Иван</first-name><last-name>Петров</last-name></author>
<book-title>Название книги</book-title>
<lang>ru</lang>
</title-info>
</description>
<body>
<section>
<title><p>Глава 1</p></title>
<p>Текст первого абзаца.</p>
</section>
</body>
</FictionBook>
Обратите внимание на пространство имён в атрибуте xmlns — без него валидаторы и часть читалок не распознают документ как FB2. Текст внутри <body> разбивается на <section> (главы), абзацы оборачиваются в <p>, а заголовок главы — в <title>.
Спецсимволы в тексте нужно экранировать: амперсанд пишется как &, знак «меньше» — как <. Если вставить «голый» амперсанд, XML-парсер выдаст ошибку.
Способ 1: ручное создание в текстовом редакторе
Этот вариант подходит для коротких текстов и для понимания того, как формат устроен изнутри. Вам понадобится редактор с подсветкой XML — например, Notepad++ или Visual Studio Code.
- 📝 Создайте новый файл и сохраните его с расширением
.fb2в кодировке UTF-8 без BOM. - 🧩 Вставьте каркас документа из примера выше и заполните блок
<title-info>: автор, название, язык. - 📖 Разбейте текст на главы, обернув каждую в
<section>, а абзацы — в<p>. - 🖼️ Для обложки добавьте блок
<binary>с изображением в Base64 и ссылку на него в<coverpage>. - ✅ Проверьте файл валидатором перед тем, как открывать его в читалке.
☑️ Проверка FB2 перед публикацией
⚠️ Внимание: если копируете текст из Word или браузера, в нём могут остаться невидимые символы и «умные кавычки», которые часть парсеров обрабатывает некорректно. Перед сборкой прогоните текст через очистку форматирования.
Способ 2: специализированные редакторы
Для длинных книг ручная разметка утомительна, и здесь выручают программы с визуальным интерфейсом. Классический инструмент для Windows — FictionBook Editor: он показывает текст как в обычном редакторе, а XML-разметку формирует автоматически. Альтернатива — FBE (Fiction Book Editor) и онлайн-редакторы, работающие в браузере.
Общий порядок работы в таких программах одинаковый: импортируете текст из TXT или DOCX, программа сама разбивает его на абзацы, затем вы вручную размечаете главы, эпиграфы и стихи, заполняете карточку книги и сохраняете результат. Перед сохранением проверьте в настройках, что выбран формат именно FB2, а не промежуточный формат редактора.
Способ 3: конвертация из других форматов
Если книга уже набрана в Word или существует в виде EPUB, разумнее сконвертировать её, а не верстать заново. Популярный вариант — Calibre: добавьте книгу в библиотеку, выберите «Конвертировать книги» и укажите выходной формат FB2. Программа перенесёт текст, оглавление и обложку.
Конвертеры не идеальны: сложная вёрстка (таблицы, сноски, врезки) может перенестись с искажениями. После конвертации откройте файл и проверьте структуру глав, а также заполните метаданные — Calibre позволяет редактировать их до конвертации, что удобнее.
| Способ | Сложность | Контроль над разметкой | Для чего подходит |
|---|---|---|---|
| Ручной (XML) | Высокая | Полный | Короткие тексты, обучение |
| FictionBook Editor | Средняя | Высокий | Полноценные книги с главами |
| Calibre (конвертация) | Низкая | Ограниченный | Перевод готовых книг в FB2 |
| Онлайн-конвертеры | Низкая | Минимальный | Быстрый разовый результат |
Добавление обложки и иллюстраций
Изображения в FB2 не лежат рядом с файлом — они кодируются в Base64 и помещаются в блоки <binary>. Каждой картинке присваивается id и тип содержимого, например content-type="image/jpeg". На обложку ссылаются из блока <coverpage> внутри описания, а на иллюстрации в тексте — через тег <image> с атрибутом ссылки на соответствующий id.
Имейте в виду: каждая встроенная картинка увеличивает размер файла примерно на треть от исходного из-за кодирования. Поэтому изображения перед вставкой стоит сжать до разумного разрешения — для экрана читалки огромные фотографии не нужны.
Как получить Base64 из картинки
Откройте изображение в любом онлайн-кодировщике Base64 или выполните в терминале команду base64 cover.jpg. Скопируйте полученную строку внутрь тега binary, указав уникальный id, например cover.jpg, и content-type="image/jpeg".
Валидация и типичные ошибки
Проверить файл можно встроенной проверкой FictionBook Editor или открыв его в браузере — если XML синтаксически неверен, браузер покажет строку с ошибкой. Также существуют онлайн-валидаторы схемы FB2.
- ❌ Незакрытый или перекрёстный тег — например,
<p>текст</section>без закрывающего</p>. - 🔠 Неверная кодировка: файл сохранён в windows-1251, а в шапке указан UTF-8 (или наоборот).
- 🚫 Неэкранированные символы
&и<в тексте. - 🗂️ Отсутствует обязательный блок
<description>или<title-info>. - 🔗 Ссылка на изображение указывает на id, которого нет среди блоков
<binary>.
⚠️ Внимание: некоторые читалки открывают даже формально невалидный FB2, но при этом «теряют» главы или не показывают обложку. Если книга отображается странно — первым делом прогоните её через валидатор, а не переделывайте текст.
Самая частая причина «битого» FB2 — несовпадение кодировки файла с кодировкой, указанной в первой строке XML-декларации. Проверяйте её в первую очередь.
Проверка готовой книги на устройствах
Финальный этап — открыть файл там, где его будут читать. Проверьте книгу минимум в двух программах: настольной читалке (например, CoolReader или FBReader) и на смартфоне или электронной книге. Убедитесь, что оглавление кликабельно, главы идут в правильном порядке, обложка отображается в библиотеке, а переносы и кавычки выглядят корректно.
Если на одном устройстве книга читается, а на другом нет, проблема почти наверняка в отклонении от стандарта: разные парсеры по-разному прощают ошибки. Вернитесь к валидации и устраните все замечания, даже те, что кажутся незначительными.
Часто задаваемые вопросы
Чем FB2 отличается от EPUB?
FB2 — одиночный XML-файл, ориентированный на художественную литературу. EPUB — это ZIP-архив из нескольких XHTML-файлов, таблиц стилей и ресурсов, он гибче в вёрстке. Для большинства русскоязычных читалок и библиотек FB2 остаётся стандартом де-факто.
Можно ли сделать FB2 из PDF?
Технически да, через конвертеры, но результат зависит от качества исходника. Если PDF содержит сканированные страницы без текстового слоя, сначала потребуется распознавание (OCR), а затем ручная вычитка — автоматика ошибается на переносах и колонках.
Почему читалка не показывает обложку?
Проверьте три вещи: есть ли блок <coverpage> внутри <title-info>, совпадает ли id в ссылке с id блока <binary> и корректно ли указан content-type изображения. Несовпадение любого из этих элементов приводит к «пустой» обложке.
Какую кодировку выбрать: UTF-8 или windows-1251?
Рекомендуется UTF-8 — её корректно понимают все современные программы и устройства. Windows-1251 встречается в старых файлах, но при её использовании критично, чтобы кодировка в XML-декларации совпадала с реальной кодировкой файла.
Нужно ли сжимать FB2 в ZIP?
Сам формат этого не требует, но многие библиотеки и читалки поддерживают файлы вида .fb2.zip — это обычный FB2, упакованный в архив для экономии места. Такой вариант открывается большинством программ без предварительной распаковки.