Трансформация FictionBook2 — DocBook — XSL-FO — PDF

KiR

История переиздания

Содержание

Преобразование FictionBook2 — DocBook
Описание XSL-трансформации
Сопоставление FictionBook2 и DocBook
Скрипт преобразования FictionBook2 — DocBook — XSL-FO — PDF
Описание
Использование
Конфигурационный файл
Шаблоны
Необходимые программные пакеты и библиотеки
Замечания по генерации PDF
Download
Бинарный пакет для Win32
Исходный код
Ссылки
Changelog

Преобразование FictionBook2 — DocBook

Описание XSL-трансформации

Преобразование FictionBook2 — DocBook написано на XSLT v1.0 с расширениями: элементом xsl:document и функцией document(). Данный XSLT-сценарий выполняет следующие действия:

  • Переводит FictionBook 2 в DocBook
  • Для полей без соответствия в DocBook из fb:description пишет соответствующие приложения в конце документа (опционально, см. Таблица 1, «Шаблонные параметры трансформации FictionBook2 — DocBook»);
  • Создает индексный файл, в котором находятся:

    • список файлов с их mime-типом;
    • метаинформация о документе (авторы, название);
    • размеры и разрешение (в dpi) вывода.
  • Выводит все вложения в .fb2 (тег binary) в отдельные файлы

Об интернационализации. В fb2docbook/l10n находятся файлы для поддержки языков (сейчас русский и английский). Если файл под какой-то язык отсутствует, то выбирается язык по умолчанию (см. Таблица 1, «Шаблонные параметры трансформации FictionBook2 — DocBook»).

Входные параметры для xslt-трансформации. 

  1. conv_info_idx — индексный файл. См. tranformation output index.
  2. document-element — название элемента типа xsl:document. Зависит от используемого процессора.

Шаблонные параметры трансформации. Находятся в шаблонах параметров, используемых для конвертации DocBook — XSL-FO, см. Таблица 6, «Шаблоны основных страниц». Одинаковы для всех шаблонов (кроме начинающихся с output.), см. включаемый файл params/p_fb2_common-default.xsl.

[Внимание] Внимание

Обязательно прочитайте про параметры output.*, page.width и page.height. В скрипте btransformer.py пока обрабатываются только такие варианты записи.

Таблица 1. Шаблонные параметры трансформации FictionBook2 — DocBook

Название параметра Описание
fb2.book-parts Указывает, как вложенные fb:section должны заменятся на соответствующие структурные элементы DocBook (например, на первом (верхнем) уровне -- это part, а идущие на том же уровне fb:epigraph и fb:image идут в partintro).
fb2.image.align Горизонтальное расположение изображения (в FB2 такое указание для рисунков отсутствует).
fb2.image.valign Вертикальное расположение изображения (в FB2 такое указание для рисунков отсутствует).
fb2.default.language Язык по умолчанию, если он не указан в FB2-документе или отсутствует его интернационализационная поддержка.
fb2.print.infos Булев параметр, выводить или нет информацию в виде приложений о FB2-документе.
fb2.not_in_toc Значение для элемента role, в случае отсутствия названия (тег fb2:title) у элемента fb2:section. Используется при дальнейших преобразованиях из Docbook для исключения пустых элементов в содержании. См. файл параметров params/p_fb2_common-default.xsl.


Таблица 2. Шаблонные параметры трансформации FictionBook2 — DocBook, записываемые в индексный файл и используемые обработчиком бинарных файлов

Название параметра Описание
output.images_mode.resize Булев параметр. Определяет, преобразовывать ли изображения. Возможные варианты записи: 1, 0, True, true, False, false.

Если истинен, обязательно определять все нижеследующие параметры!

output.images_mode.mode Если установлен в 'BW', то изображения преобразуются в черно-белые.
output.dpi.width Количество точек на дюйм по горизонтали.

Записывается просто числом в строке!

output.dpi.height Количество точек на дюйм по вертикали.

Записывается просто числом в строке!

output.max_image_margin.width Если умножить на 2 и полученное число вычесть из ширины страницы в пикселях, то получим максимальный горизонтальный размер изображения.

В пикселях! Записывается просто числом в строке!

output.max_image_margin.height Если умножить на 2 и полученное число вычесть из высоты страницы в пикселях, то получим максимальный вертикальный размер изображения.

В пикселях! Записывается просто числом в строке!


Таблица 3. Шаблонные параметры трансформации FictionBook2 — DocBook, записываемые в индексный файл и используемые обработчиком бинарных файлов, и трансформацией DocBook — XSL-FO

Название параметра Описание
page.width Ширина страницы.

В миллиметрах. Записывается как действительное число (разделитель — точка), далее без пробела 'mm'. Например, '88.184mm'

page.height Высота страницы.

В миллиметрах. Записывается как действительное число (разделитель — точка), далее без пробела 'mm'. Например, '113.854mm'


Сопоставление FictionBook2 и DocBook

TODO

Скрипт преобразования FictionBook2 — DocBook — XSL-FO — PDF

Описание

Скрипт написан на Python. Служит "обвязкой" для xsl-трансформаций и преобразований с помощью других инструментов, скрывая детали низкоуровневой реализации. Переводит вложенные в .fb2 файлы обратно в бинарный вид и выполняет трансформацию изображений (изменение размера и цветности).

Использование

btransformer.py {--config config_file} [ options ...] { input_file } [output_file]

[Замечание] Замечание

Входной .fb2-файл может быть сжат:

  • gzip (расширение .gz)
  • bzip2 (расширение .bz2)
  • zip (расширение .zip), в данном случае обработается единственный файл в архиве, иначе с именем, совпадающим с названием архива, но без суффикса '.zip'

Таблица 4. Опции командной строки

Название опции (с возможными синонимами) Параметр опции Описание
--version   Вывод версии программы и завершение ее выполнения.
-h, --help   Вывод описания опций программы и завершение ее выполнения.
-c, --config FILE Обязательный параметр. Указывает конфигурационный файл FILE.
--wh   Включение win32hack — закрытие консольного окна в системе Win32 происходит только после нажатия любой клавиши.
--no-remove_tmp   Отключить удаление временных файлов.
--no-update_metadata   Отключить обновление метаданных в выходном pdf-файле.
--xslt_proc XSLT_PROC Использовать XSLT_PROC из конфигурационного файла как XSLT процессор.
--fo_proc FO_PROC Использовать FO_PROC из конфигурационного файла как XSL-FO процессор.
--pdf_proc PDF_PROC Использовать PDF_PROC из конфигурационного файла как процессор, обнавляющий метаданные в pdf-файле.
--pdf_optimizer PDF_OPTIMIZER Использовать PDF_OPTIMIZER из конфигурационного файла как pdf-оптимизатор.
--xslt_params FILE Использовать шаблонный файл FILE для преобразования из DocBook.
--xslt_titlepages FILE Использовать файл с описанием форматирования титульных страниц FILE для преобразования из DocBook.
--translify [a]   Использовать транслитерацию на латиницу в метаданных pdf-файла.
--epub  

Вывод в формат EPUB.

[Замечание] Замечание

С данным флагом применимы лишь следующие параметры.

--config
--wh
--no-remove_tmp
--xslt_proc
--xslt_params

[a] Параметр --translify доступен, если установлены модули pytils и Beautiful Soup.


Конфигурационный файл

TODO

Шаблоны

В пакеты входят шаблоны, приспособленные для вывода pdf из формата FB2 и для устройства Sony Reader. Находятся в директории params дистрибутива.

Таблица 5. Шаблоны для заглавных страниц

Название файла шаблона Формат или устройство Примечание
titlepage.templates_prs-default.xml Sony Reader PRS-50X Уменьшены размеры шрифтов заглавий
titlepage.templates_a4-default.xml Бумага, размер A4 Изменений не вносилось (копия из дистрибутива Docbook XSL Stylesheets)
titlepage.templates_a5-default.xml Бумага, размер A5

Для распечатки по две страницы на A4

Изменений не вносилось (копия из дистрибутива Docbook XSL Stylesheets)


Таблица 6. Шаблоны основных страниц[1]

Название файла шаблона Формат или устройство Шрифты Примечание
params_prs-font.liberation.xsl Sony Reader PRS-50X Шрифты Liberation  
params_prs-font.vista.xsl Sony Reader PRS-50X

Шрифты из Vista

основной — Cambria
без засечек — Candara
моноширинный — Consolas
 
params_a4-font.liberation.xsl Бумага, размер A4 Шрифты Liberation  
params_a4-font.vista.xsl Бумага, размер A4

Шрифты из Vista

основной — Cambria
без засечек — Candara
моноширинный — Consolas
 
params_a5-font.liberation.xsl Бумага, размер A5 Шрифты Liberation Для распечатки по две страницы на A4
params_a5-font.vista.xsl Бумага, размер A5

Шрифты из Vista

основной — Cambria
без засечек — Candara
моноширинный — Consolas
Для распечатки по две страницы на A4

[1] Во всех шаблонах параметры для преобразования FictionBook2 — DocBook одинаковы.


Необходимые программные пакеты и библиотеки

Замечания по генерации PDF

Генерация в FOPFOP пишет в .pdf только содержание (bookmarks), другую метаинформацию (автор, название) приходится дописывать с помощью pdftk. К сожалению в таком случае Acrobat Pro/Acrobat Reader (по-крайне мере версии 8) показывает только поле Title (название), при этом вьюер в Sony Reader показывает все поля. Не поддерживает вывод линеаризированного PDF.

Генерация в XEPXEP имеет расширение к XSL-FO, которое позволяет дописывать всю метаинформацию, и в .pdf, полученных с использованием этого процессора, в Adobe Acrobat виден весь description (описание). Поддерживает линеаризацию при выводе .pdf-файла (опция конфигурации LINEARIZE, отключена по умолчанию).

Линеаризация.  Для комфортного просмотра pdf-документов при медленном доступе к файлу или при малом количестве оперативной памяти, необходимо проводить линеаризацию документа (так называемый 'fast web view' в Acrobat). Для этого можно использовать либо Adobe Acrobat (File - Save as (Adobe pdf files, optimized, *.pdf) и выставить соответствующую опцию в Settings), либо скрипт pdfopt из пакета Ghostscript . Начиная с версии 0.1.bzr252 в fb2docbook включена поддержка оптимизатора pdfopt.Это позволяет сразу получать файлы, пригодные к комфортному чтению на устройствах Sony Reader.

Download

Бинарный пакет для Win32

Download. 

Требования текущей версии. Установленная JVM.

Установка и запуск. Распаковать в директорию по выбору. Далее, находясь в данной директории, обязательно запустить confsetup.exe для генерации конфигурационных файлов с указанием абсолютных путей к компонентам пакета! Для запуска использовать скрипт btransformer.cmd.

[Внимание] Внимание

Начиная с версии с версии 0.1.bzr320 при установке необходим запуск confsetup.exe.

Состав пакета текущей версии. 

Ссылки

Changelog

v0.1.bzr349. 

  • Исправление обработки сносок в XSLT-сценарии.
  • Возможность отключения преобразования цветности картинок через параметр output.images_mode.mode.

v0.1.bzr338. 

  • Добавлен вывод в EPUB формат.
  • Внутренние изменения в btransformer.

v0.1.bzr320. 

  • Секции (тег fb2:section) без заглавий fb2-документа в выходном файле более не выводятся в содержание (это не относится в метаинформации в PDF-файле!).
  • Исправлены ошибки в XSL преобразовании из FB2.
  • В версию пакета под Win32 добавлен скрипт, генерирующий конфигурационные и стартовые файлы. В связи с чем запуск преобразователя возможен из любой текущей директории, так как он больше не завязан на относительные пути компнент.
  • В шаблонах PRS-50X включена генерация печатного содержания, так как GPL Ghostrcript, начиная с версии 8.63, корректно линеаризирует pdf-файлы.
  • Обновлены инструменты в пакете под Win32.
  • Исправления в документации.

v0.1.bzr253. 

  • Улучшена работа с упакованными zip'ом файлами: единственный .fb2 внутри может носить любое имя, иначе выбирается файл, совпадающий с именем архива, но без суффикса '.zip'.
  • Добавлена опциональная поддержка транслитерации метаинформации в PDF (автор/название).

v0.1.bzr252. 

  • Добавлена поддержка оптимизатора (линеаризатора) pdfopt из пакета Ghostscript.
  • Тег fb:subtitle заменяется теперь на docbook:bridgeahead.
  • Другие несущественные изменения в XSLT-сценарии.
  • Обновлены инструменты в пакете под Win32.
  • Обновлены шаблоны трансформации Docbook.
  • И другое.



[1] Во всех шаблонах параметры для преобразования FictionBook2 — DocBook одинаковы.

[2] Не поддерживает вывод вложенных файлов, т.к. xalan:write всегда выводит в выходном файле xml-заголовок.

[3] Оба процессора написаны на Java и требуют установленной JVM

[4] Метрики для FOP'а в архиве отсутствуют, так как начиная с версии 0.94 больше не требуются.