Содержание
Преобразование FictionBook2 — DocBook написано на XSLT v1.0 с расширениями: элементом
xsl:document
и функцией document()
. Данный
XSLT-сценарий выполняет следующие действия:
Создает индексный файл, в котором находятся:
binary
) в отдельные
файлы
Об интернационализации. В fb2docbook/l10n
находятся файлы для поддержки языков (сейчас
русский и английский). Если файл под какой-то язык отсутствует, то выбирается язык по
умолчанию (см. Таблица 1, «Шаблонные параметры трансформации FictionBook2 — DocBook»).
Входные параметры для xslt-трансформации.
conv_info_idx
— индексный файл. См. tranformation output index. document-element
— название элемента типа
xsl:document. Зависит от используемого процессора.
Шаблонные параметры трансформации. Находятся в шаблонах параметров, используемых для конвертации DocBook — XSL-FO, см.
Таблица 5, «Шаблоны основных страниц». Одинаковы для всех шаблонов (кроме начинающихся с
output.
), см. включаемый файл
params/p_fb2_common-default.xsl
.
![]() |
Внимание |
---|---|
Обязательно прочитайте про параметры |
Таблица 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-документе. |
Таблица 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'. Например, '88.184mm' |
page.height
|
Высота страницы. В миллиметрах. Записывается как действительное число (разделитель — точка), далее без пробела 'mm'. Например, '113.854mm' |
Скрипт написан на Python. Служит "обвязкой" для xsl-трансформаций и преобразований с помощью других инструментов, скрывая детали низкоуровневой реализации. Переводит вложенные в .fb2 файлы обратно в бинарный вид и выполняет трансформацию изображений (изменение размера и цветности).
![]() |
Замечание |
---|---|
Входной .fb2-файл может быть сжат:
|
Usage: btransformer.py --config config_file [options] fb2_file[.(zip|gz|bz2)] 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 --no-update_metadata do not update metadata --no-linearize_pdf do not linearize pdf --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 --pdf_optimizer=PDF_OPTIMIZER set pdf_optimizer 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
|
||||
params_a4-font.liberation.xsl
|
Бумага, размер A4 | Шрифты Liberation | ||||
params_a4-font.vista.xsl
|
Бумага, размер A4 |
Шрифты из Vista
|
||||
params_a5-font.liberation.xsl
|
Бумага, размер A5 | Шрифты Liberation | Для распечатки по две страницы на A4 | |||
params_a5-font.vista.xsl
|
Бумага, размер A5 |
Шрифты из Vista
|
Для распечатки по две страницы на A4 |
XSLT-процессор, поддерживающий спецификацию XSLT v1.0 и инструкцию типа
xsl:document
из спецификации XSLT v1.1. Один из:
XSL-FO-процессор. Один из:[3]
Python v2.4 и выше
Генерация в FOP. FOP пишет в .pdf только содержание (bookmarks), другую метаинформацию (автор, название) приходится дописывать с помощью pdftk. К сожалению в таком случае Acrobat Pro/Acrobat Reader (по-крайне мере версии 8) показывает только поле Title (название), при этом вьюер в Sony Reader показывает все поля. Не поддерживает вывод линеаризированного PDF.
Генерация в XEP. XEP имеет расширение к XSL-FO, которое позволяет дописывать всю метаинформацию, и в .pdf, полученных с использованием этого процессора, в Adobe Acrobat виден весь description (описание). Поддерживает линеаризацию при выводе .pdf-файла (опция конфигурации LINEARIZE, отключена по умолчанию).
Линеаризация. Для комфортного просмотра pdf-документов при медленном доступе к файлу или при малом
количестве оперативной памяти, необходимо проводить линеаризацию документа (так называемый
'fast web view' в Acrobat). Для этого можно использовать либо
Adobe Acrobat ( - (Adobe pdf files, optimized, *.pdf) и выставить
соответствующую опцию в ), либо скрипт
pdfopt из пакета
Ghostscript
. Но если использовать pdfopt, то просмотрщик в
PRS-500 не показывает страницы после оглавления вообще, они просто
пусты (сложно сказать где и у кого в данном случае ошибка или недоработка). В случае же
оптимизации в Acrobat'е, полученные документы быстро
отображаются и листаются на Sony Reader на любой и с любой страницы.
Начиная с версии 0.1.bzr252 в fb2docbook включена поддержка оптимизатора pdfopt, а также в
шаблоне params/params_prs-default.xsl
отключена генерация оглавления
(в метаинформации TOC остается!). Это позволяет сразу получать файлы, пригодные к
комфортному чтению на устройствах Sony Reader.
Download.
fb2d.pkg.bin.win32-0.1.bzr252.zip
fb2d.pkg.bin.win32-0.1.bzr236.zip
Требования текущей версии. Установленная JVM.
Установка и запуск. Распаковать в директорию по выбору. Для запуска использовать скрипт btransformer.cmd.
![]() |
Внимание |
---|---|
Из-за относительных путей в конфигурации, текущая директория при запуске скрипта должна быть той, куда распакован пакет (т.е. запускать его из этой директории). |
Состав пакета текущей версии.
Python imaging library (PIL) v1.1.6
Pdftk v1.41
GPL Ghostscript v8.60 без шрифтов
[1] Во всех шаблонах параметры для преобразования FictionBook2 — DocBook одинаковы.
[2] Не поддерживает вывод вложенных файлов, т.к. xalan:write всегда выводит в выходном файле xml-заголовок.
[3] Оба процессора написаны на Java и требуют установленной JVM
[4] Метрики для FOP'а в архиве отсутствуют, так как начиная с версии 0.94 больше не требуются.