Описание формата FB2 или как создать FB2 вручную?

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

Описание формата FB2 или как создать FB2 вручную?

Описание формата FB2

FB2 (FictionBook) – специальный формат разметки электронных книг, реализованный на XML.

FB2-файл – это файл в формате XML с расширением FB2, который является электронной книгой.

Формат FB2 создан для обеспечения совместимости электронных книг с любыми устройствами, иными словами, чтобы электронные книжки можно было удобно читать на всех устройствах.

Самым простым форматом, который читается абсолютно на всех устройствах, является TXT, т.е. обычные текстовые файлы, однако эти файлы не содержат никакой разметки (нет форматирования), за счет этого их чтение вызывает затруднение, простыми словами, не удобно, особенно если этот файл — книга. Поэтому и был создан стандарт FB2, который также читается очень легко на всех устройствах, но уже имеет разметку, что делает FB2-файлы удобными для чтения.

Формат FB2 предполагает разметку структуры документа, в нем нет привязки к типу или размеру устройства, на котором будет читаться файл FB2. Именно поэтому книга (FB2 документ) будет отображаться одинаково правильно на всех устройствах независимо от их размеров или аппаратного обеспечения. Отображение структуры FB2 документа будет зависеть только от пользовательских настроек конкретной программы или устройства, на котором будет открыт FB2 документ.

Книги в формате FB2, как уже было отмечено, это обычные XML-документы с расширением FB2, они размечаются с помощью тегов и могут содержать описание книги, обложку и картинки в двоичном формате, разделы и текст, размеченные специальным образом для удобного чтения, цитаты, таблицы и другие нужные элементы книги. Лично мне принцип разметки FB2 напоминает язык HTML, где HTML-документы точно также размечаются тегами.

Официальный сайт FictionBook — http://www.fictionbook.org. На нем Вы найдете самую детальную информацию о данном формате.

Как создать файл FB2?

Для того чтобы создать книгу в формате FB2 (или просто файл), существует очень много программ, например: Fiction Book Designer или Fiction Book Editor, они позволяют создавать книги с нуля, а также редактировать уже существующие. Но чисто в FB2 Вы, конечно же, не будете писать книгу, Вы ее будете писать в удобном текстовом редакторе, а потом переносить в FB2, перечисленные программы позволяют вставлять текст и осуществлять его разметку, в некоторых случаях даже сохраняя исходное форматирование. Они содержат графические инструменты, которые позволяют создавать все элементы формата FB2, при этом технические знания формата FB2 не требуются. Но честно сказать, к этим программам нужно привыкать и лично мне они не приглянулись. Кстати, если Вы знаете очень удобную программу, предназначенную для создания и редактирования файлов FB2, которой Вы лично пользуетесь, и она Вас устраивает, делитесь названием в комментариях, мне и другим посетителям сайта было бы интересно узнать их.

Интересное! Как записать GIF с экрана компьютера.

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

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

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

Файл FB2 можно легко открыть в простом текстовом редакторе, очень удобно пользоваться Notepad++.

Основные теги FB2 (элементы FB2)

Как мы уже выяснили, формат FB2 – это разметка в формате XML. Документ FB2, как и XML, необходимо объявлять, он содержит один корневой элемент, в котором и располагается вся остальная размеченная информация. Практически все элементы (теги) в FB2 открываются и обязательно закрываются, в противном случае отображение книги будет некорректным, есть теги, которые не нужно закрывать (одиночные теги, примеры мы рассмотрим ниже), но это скорей исключение из правил, поэтому запомните, что в FB2 все элементы необходимо закрывать.

Давайте рассмотрим основные элементы формата FB2.

Объявление XML документа

В самом начале любого файла FB2 необходимо объявить XML документ, это делается следующим образом.

   
   <?xml version="1.0" encoding="utf-8"?>

FictionBook – корневой элемент FB2

В FB2 все данные расположены в корневом элементе, он один и называется FictionBook. Открывается в начале сразу после объявления XML, а закрывается в самом конце файла FB2.

Пример

   
   <FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
     Остальная разметка
   </FictionBook>

Корневой элемент FictionBook содержит несколько вложенных элементов: description, body и binary.

description – описание книги (документа)

description – тег, с помощью которого описывается FB2 документ. Данный элемент обязательно указывается, причем только один раз.

В разделе description можно располагать следующие элементы.

title-info – информация о книге

Элемент содержит информацию о книге. Внутри данного элемента возможно размещение следующей информации:

  • genre — жанр книги. Вот несколько доступных значений:
    • sf_fantasy – Фэнтези;
    • detective – Детектив;
    • children – Детское;
    • sci_history – История;
    • sci_psychology – Психология;
    • sci_philosophy – Философия;
    • comp_www – Интернет.
  • author — автор книги. Возможны вложенные тэги:
    • first-name – Имя;
    • last-name – Фамилия;
    • middle-name – Отчество;
    • nickname – Ник;
    • email – Адрес электронной почты.
  • book-title — название книги;
  • annotation — аннотация книги. Возможны вложенные тэги, например, тег p (параграф);
  • date — дата написания книги;
  • coverpage — обложка книги. Внутри содержит одиночный тэг image, в котором в виде атрибута указывается локальная (#) ссылка на картинку;
  • lang — язык книги (после перевода), например, ru – это русский язык;
  • src-lang – исходный язык книги (до перевода), например, en – это английский;
  • sequence – информация, к каким сериям относится книга.

Интересное! Опрос. Какой операционной системой Вы пользуетесь?

document-info – информация о файле FB2

Элемент содержит информацию о файле (документе) FB2. Возможно размещение следующей информации:

  • author — автор документа. Возможны вложенные тэги, например:
    • first-name – Имя;
    • last-name – Фамилия;
    • middle-name – Отчество;
    • nickname – Ник;
    • email – Адрес электронной почты.
  • program-used – программа, в которой создан FB2 документ;
  • date – дата создания FB2 документа;
  • id – уникальный идентификатор документа FB2;
  • version – версия документа, например, 1.0;
  • history – история создания и изменения документа.

publish-info – сведения об издании книги

Элемент содержит информацию об издании книги. Возможно размещение следующей информации:

  • book-name — название оригинальной (бумажной) книги;
  • publisher — название издательства;
  • city- город, в котором издана книга;
  • year — год издания книги.

custom-info – произвольная информация

Необязательный элемент, может содержать любую произвольную информацию.

body – тело документа

body – тег, в котором мы размещаем все содержимое своего FB2 документа. Обычно в документе один элемент body.

Для разметки текста в книге мы можем использовать следующие теги внутри элемента body (ниже представлены не все теги, а только часто используемые):

  • section – раздел или глава книги. Именно с помощью данного тега мы можем разделять книгу на главы. Внутри данного элемента располагаются все данные, относящиеся к конкретной главе;
  • title – заголовок;
  • epigraph – эпиграф. Содержит форматированный текст (параграфы p), также может содержать имя автора текста в теге text-author;
  • p – параграф;
  • cite – цитата. Содержит форматированный текст (параграфы p), также может содержать имя автора цитаты в теге text-author;
  • strong – выделение текста жирным;
  • emphasis – выделение текста курсивом;
  • table – таблица, так же, как и в HTML;
  • empty-line – одиночный тег, предназначенный для вставки пустой строки.
  • a – ссылка.

binary – двоичные объекты

binary – данный тег содержит двоичные объекты, которые включает FB2 документ (например, картинки). Binary имеет следующие атрибуты:

  • id – идентификатор (имя) двоичного объекта;
  • content-type — MIME-тип объекта.

В FB2 есть поддержка картинок в формате JPG (тип image/jpeg) и PNG (тип image/png). Формат GIF не поддерживается. Файл для обложки обычно называют cover.jpg.

Заметка! Где заказать обложку для книги.

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

Примечание! Если у Вас итоговая книга отображается на устройстве не так, как Вы ожидаете, это означает, что Вы допустили ошибку в разметке, например, не закрыли тег или неправильно его написали. В этих случаях возможно некорректное отображение всей книги, включая обложку, т.е. она может просто не отображаться (только из-за того, что в разметке ошибка, которая даже не связана с обложкой). Поэтому после формирования книги следует проверять ее на предмет наличия ошибок (существуют специальные валидаторы, некоторые программы по созданию FB2 обладают встроенным таким функционалом).

Пример разметки электронной книги в формате FB2

Сейчас я приведу отрывок исходного текста книги, размеченного с помощью формата FB2.

Заметка! В примере отрывок книги «Как стать программистом? 14 советов по достижению поставленной цели», эту книгу написал я, она предназначена для тех, кто хочет стать программистом, в ней представлен последовательный план действий.

   
   <?xml version="1.0" encoding="utf-8"?>
   <FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
     <description>
        <title-info>
           <author>
                <first-name>Виталий</first-name>
                <last-name>Трунин</last-name>
           </author>
             <book-title>Как стать программистом?</book-title>
             <annotation>
                <p>Многие хотят стать программистом, и также многие не знают, как это сделать, не знают,
                в каком направлении двигаться и что конкретно нужно делать, поэтому я хочу поделиться с Вами
                своим опытом становления программистом и результатом анализа этой темы. В этой книге 
                представлены универсальные практические советы, рассмотрен конкретный план действий, 
                который поможет Вам стать программистом. В ней рассмотрено всё, что нужно делать для того, 
                чтобы стать полноценным разработчиком программного обеспечения. Книга не научит 
                Вас программированию, но после ее прочтения Вы будете четко знать, как двигаться дальше, 
                если Вы хотите стать программистом.</p>
                <p>Виталий Трунин – ведущий специалист в области разработки баз данных и программирования
                на языке T-SQL, основатель, разработчик и администратор сайта Info-Comp.ru.</p>
             </annotation>
           <coverpage>
                <image l:href="#cover.jpg" />
            </coverpage>
                <lang>ru</lang>
        </title-info>
                <document-info>
                        <author>
                                <first-name>Виталий</first-name>
                                <last-name>Трунин</last-name>
                        </author>
                        <id>20181105110000</id>
                        <version>1.0</version>
                </document-info>
                <publish-info>
                        <book-name>Как стать программистом?</book-name>
                </publish-info>   
        </description>
        <body>
                <section>
                  <title>
                        <p><strong>Предисловие</strong></p>
                  </title>
                  <epigraph>
                    <p>«Избегайте тех, кто пытается подорвать Вашу веру в себя. Эта черта свойственна мелким людям.
                    Великий человек, наоборот, внушает Вам чувство, что и Вы можете стать великим».</p>
                    <text-author>Марк Твен</text-author>
                  </epigraph>
                  <empty-line/>
                  <p>Здравствуй, уважаемый читатель!...</p>
                </section>
        </body>
        <binary id="cover.jpg" content-type="image/jpeg">
                Данные файла в формате BASE64
        </binary>
   </FictionBook>

У меня на этом все, надеюсь, статья была Вам интересна, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 4
  1. Евгения

    Спасибо! Хорошая, очень простая и ясная статья)))

  2. Олег

    Здравствуйте! Подскажите, пожалуйста, как засунуть картинку в формат fb2 для обложки книги?

    1. Аноним

      2 Олег:

      В добавляешь:

      Файл картинки либо помещаешь рядом с книжкой (или в один архив .fb2.zip), либо перегоняешь в base64 и заключаешь в тэг … внутри самого fb2.

      1. Аноним

        Эх, парсер съел все тэги. Короче: title-info ← coverpage ←image (l:href=»#картинка.jpg»). Картинку можно оставить извне, а можно поместить в виде base64 в тэг binary (id=»имя_картинки.jpg» content-type=»image/jpeg») после закрывающего body.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.