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

KiR


Содержание

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

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

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

Преобразование FictionBook2 — DocBook написано на XSLT v1.0 с расширениями: элементом xsl:document и функциями document(), key(), generate-id(). Данный 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, см. Таблица 5, «Шаблоны основных страниц». Одинаковы для всех шаблонов (кроме начинающихся с 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.subtitle.role Выделение (жирный, курсив и т.д.) для тега fb:subtitle.
fb2.default.language Язык по умолчанию, если он не указан в FB2-документе или отсутствует его интернационализационная поддержка.
fb2.print.infos Булев параметр, выводить или нет информацию в виде приложений о FB2-документе.


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

TODO

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

Описание

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

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

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

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

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

usage: btransformer.py --config config_file [options] fb2_file pdf_file

options:
  --version              show program's version number and exit
  -h, --help             show this help message and exit
  -c FILE, --config=FILE read config from FILE
  --wh                   turn on win32hack -- needed for using on win32
                         without tools installation
  --no-remove_tmp        do not remove working temporal files
  --xslt_proc=XSLT_PROC  set xslt_proc to use
  --fo_proc=FO_PROC      set fo_proc to use
  --pdf_proc=PDF_PROC    set pdf_proc to use
  --xslt_params=FILE     set xslt_params file to use
  --xslt_titlepages=FILE set xslt_titlepages file to use

Шаблоны

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

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

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

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

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


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

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

Шрифты из 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


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

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

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

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

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

Download

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

Download. 

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

Установка и запуск. Распаковать в директорию по выбору. Для запуска использовать скрипт btransformer.cmd.

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

Из-за относительных путей в конфигурации, текущая директория при запуске скрипта должна быть той, куда распакован пакет (т.е. запускать его из этой директории).

Состав пакета. 

Исходный код

Download. 

Ссылки



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

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

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

[4] Метрики для FOP'а в архиве присутствуют.