Поиск по сайту:

Заглянем внутрь файла EPUB


Файлы EPUB — отличный способ публиковать контент в открытом формате.

Электронные книги — отличный способ читать книги, журналы и другой контент в дороге. Читатели могут наслаждаться электронными книгами, чтобы скоротать время во время длительных перелетов и поездок на поезде. Самый популярный формат файлов электронных книг — это файл EPUB, сокращение от «электронная публикация». Файлы EPUB поддерживаются различными устройствами для чтения электронных книг и сегодня являются стандартом для публикации электронных книг.

Формат файла EPUB — это открытый стандарт, основанный на XHTML для контента и XML для метаданных, содержащихся в zip-архиве. А поскольку все основано на открытых стандартах, мы можем использовать общие инструменты для создания или проверки файлов EPUB. Давайте рассмотрим файл EPUB, чтобы узнать о нем больше. Руководство с советами и рекомендациями по программированию на C, опубликованное ранее в этом году на Opensource.com, доступно в формате PDF или EPUB.

Поскольку файлы EPUB представляют собой содержимое XHTML и метаданные XML в zip-файле, вы можете начать с команды unzip, чтобы просмотреть EPUB из командной строки:

$ unzip -l osdc_Jim-Hall_C-Programming-Tips.epub 
Archive:  osdc_Jim-Hall_C-Programming-Tips.epub
  Length      Date    Time    Name
---------  ---------- -----   ----
       20  06-23-2022 00:20   mimetype
     8259  06-23-2022 00:20   OEBPS/styles/stylesheet.css
     1659  06-23-2022 00:20   OEBPS/toc.xhtml
     4460  06-23-2022 00:20   OEBPS/content.opf
    44157  06-23-2022 00:20   OEBPS/sections/section0018.xhtml
     1242  06-23-2022 00:20   OEBPS/sections/section0002.xhtml
    22429  06-23-2022 00:20   OEBPS/sections/section0008.xhtml
[...]
     9628  06-23-2022 00:20   OEBPS/sections/section0016.xhtml
      748  06-23-2022 00:20   OEBPS/sections/section0001.xhtml
     3370  06-23-2022 00:20   OEBPS/toc.ncx
     8308  06-23-2022 00:21   OEBPS/images/image0011.png
     6598  06-23-2022 00:21   OEBPS/images/image0009.png
[...]
    14492  06-23-2022 00:21   OEBPS/images/image0005.png
      239  06-23-2022 00:20   META-INF/container.xml
---------                     -------
   959201                     41 files

Этот EPUB содержит множество файлов, но большая часть из них — контент. Чтобы понять, как создается файл EPUB, проследите за процессом чтения электронных книг:

  1. Читателям электронных книг необходимо убедиться, что файл EPUB действительно является файлом EPUB. Они проверяют файл, проверяя файл mimetype в корне архива EPUB. Этот файл содержит всего одну строку, описывающую тип MIME файла EPUB:

    application/epub+zip
  2. Чтобы найти содержимое, программы чтения электронных книг начинают с файла META-INF/container.xml. Это краткий XML-документ, в котором указано, где найти контент. Для этого файла EPUB файл 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>

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

  3. В файле container.xml указано, что корень EPUB начинается с файла content.opf в каталоге OEBPS. Расширение OPF связано с тем, что EPUB основан на открытом формате упаковки, но файл content.opf на самом деле является просто еще одним XML-файлом.

  4. Файл content.opf содержит полный манифест содержимого EPUB, а также упорядоченное оглавление со ссылками для поиска каждой главы или раздела. Файл content.opf для этого EPUB довольно длинный, поэтому в качестве примера я покажу здесь лишь его часть.

    Данные XML содержатся в блоке <package>, который сам содержит блок <metadata>, данные <manifest> и <spine>блок, содержащий оглавление электронной книги:

    <?xml version="1.0" encoding="UTF-8"?><package unique-identifier="unique-identifier" version="3.0" xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:opf="http://www.idpf.org/2007/opf"><metadata><dc:identifier id="unique-identifier">osdc002</dc:identifier><dc:title>Tips and Tricks for C Programming</dc:title><dc:creator>Jim Hall</dc:creator><dc:language>English</dc:language><meta property="dcterms:modified">2022-06-23T12:09:13Z</meta><meta content="LibreOffice/7.3.0.3$Linux_X86_64 LibreOffice_project/0f246aa12d0eee4a0f7adcefbf7c878fc2238db3 (libepubgen/0.1.1)" name="generator"/></metadata><manifest>...<item href="https://opensource.com/sections/section0001.xhtml" id="section0001" media-type="application/xhtml+xml"/><item href="https://opensource.com/images/image0003.png" id="image0003" media-type="image/png"/><item href="https://opensource.com/styles/stylesheet.css" id="stylesheet.css" media-type="text/css"/><item href="https://opensource.com/toc.ncx" id="toc.ncx" media-type="application/x-dtbncx+xml"/>...</manifest><spine toc="toc.ncx"><itemref idref="section0001"/><itemref idref="section0002"/><itemref idref="section0003"/>...</spine></package>

    Вы можете сопоставить данные, чтобы увидеть, где найти каждый раздел. Вот как это делают читатели EPUB. Например, первый элемент в оглавлении ссылается на section0001, который определен в манифесте и расположен в файле sections/section0001.xhtml. Файл не обязательно должен называться так же, как запись idref, но именно так автоматический процесс LibreOffice Writer создал файл. (В метаданных видно, что этот EPUB был создан с помощью LibreOffice версии 7.3.0.3 для Linux, который может экспортировать контент в виде файлов EPUB.)

Формат EPUB

Файлы EPUB — отличный способ публиковать контент в открытом формате. Формат файла EPUB представляет собой метаданные XML с содержимым XHTML внутри zip-контейнера. Хотя большинство технических писателей используют инструменты для создания файлов EPUB, поскольку EPUB основан на открытых стандартах, это означает, что вы можете создавать свои собственные файлы EPUB каким-либо другим способом.

Статьи по данной тематике: