Справочник
Настройки конвертера fb2pdf находятся в файле \data\stylesheet.json
Ниже приведены используемые параметры и их допустимые значения.
-----------------------------------------------------
generalSettings
Общие параметры. Раздел содержит следующие настройки:
-----------------------------------------------------
secondPassStylesheet
Включение двойного рендеринга PDF для псевдо-динамического изменения размера шрифтов. Значение: путь, включающий название второго конфигурационного файла, например "./data/stylesheet2.json".
Примечание: Двойной рендеринг призван решить известную проблему чтения в формате PDF - невозможность корректно менять размер шрифта непосредственно во время чтения. Поскольку содержимое каждой страницы полностью определяется на этапе формирования PDF, то во время чтения менять что-либо уже "поздно". Имеющаяся кое-где функция reflow хоть и меняет размеры шрифта, но кроме простейшего текста всё остальное безнадёжно калечит. Двойной рендеринг решает эту проблему путем вывода книги в файл PDF дважды, причем вторая копия имеет отдельные настройки - т.е. можно задать ей другой размер шрифта. Для "переключения" между двумя вариантами книги в содержание добавляется раздел, позволяющий быстро перейти с текущей страницы на соответствующую страницу второго варианта.
enableDoubleRenderingOutline
Дополнительный раздел в закладках для переходов между страницами при двойном рендеринге. Значение: true/false
bodiesToRender
Позволяет указать, какие разделы тела книги (body) следует выводить. Значение: запрос XQuery
Например, нижеприведенная запись означает "выводить только безымянные либо с отличающимся от 'notes' именем разделы body":
bodiesToRender: "//body[empty(@name) or @name != 'notes']"
generateTOCLevels
Отображение многоуровневого содержания. Значение: целое число (отключено, если 0)
generateFrontMatter
Отображение дополнительной информации о книге (UUID, издатель, и т.п.). Значение: true/false
generateNoteBackLinks
Построение обратных ссылок из концевых сносок. Значение: true/false
generateInternalLinks
Построение внутренних ссылок. Значение: true/false
transliterateMetaInfo
Транслитерация метаинформации (название, закладки и т.п.) Значение: true/false
forceTransliterateAuthor
Отдельная транслитерация автора в метаинформации. Значение: true/false
metaAuthorQuery
Параметр содержит запрос XQuery, описывающий содержимое свойства Author документа PDF. Позволяет менять порядок, убирать отдельные части имени, формировать в произвольном виде. Значение по умолчанию: (last-name, first-name, middle-name)
imageDpi
Разрешение растровых картинок, в точках на дюйм. Значение: число (например, 150 для экрана размером 9.7" с разрешением 1200x824, 168.212 для экрана размером 6" с разрешением 800x600, 200 для экрана размером 5" с разрешением 800x600, и т.д.)
stretchCover
Масштабирование обложки. Значение: true/false
enableInlineImages
Поддержка изображений внутри параграфов. Значение: true/false
fullCompression
Дополнительное сжатие выходного PDF-файла. Значение: true/false
trackingSpaceCharRatio
Указывает, в каком соотношении распределять "лишнее" пространство в выровненной строке. Чем больше значение, тем больше места достанется интервалам между словами и меньше - между буквами. Очень большое число, например 10000, фактически означает "межсимвольное расстояние не трогать". Значение: число (по умолчанию 2.5, возможный минимум 0.001).
overrideImageTransparency
Замена прозрачных пикселей в изображениях на произвольный цвет. Это спасает от проблем с прозрачностью у некоторых PNG. Значение: html-код цвета, например "0xFFFFFF".
makeGrayImageTransparent
Добавление изображениям прозрачности: присваивается пикселям серого цвета по принципу "чем белее - тем прозрачней".
Примечание: Экспериментальный параметр! При включении чёрно-белые изображения на небелом фоне будут выглядеть лучше, а вот для цветных применять не рекомендуется.
cacheImages
Предотвращение повторной вставки изображений, встречающихся в документе несколько раз. Может отрицательно сказаться на скорости перелистывания книги е-ридерами, поэтому по умолчанию выключено. Значение: true/false
ignoreEmptyLineBeforeImage, ignoreEmptyLineAfterImage
Игнорирование пустых строк перед/после изображения. Значение: true/false
strictImageSequence
Позволяет установить строгий порядок изображений или перемещение их в отрыве от текста для лучшего заполнения страниц. Значение: true/false
enableLinkPageNum
Добавление к сноскам номеров страниц, где они располагаются. Значение: true/false
linkPageNumFormat
Форматирование ссылки-с-номером-страницы (см. синтаксис). Единственный подставляемый параметр - номер страницы. Образец: " [стр.%04d]".
Примечание: Если при задании формата используются русские буквы, необходимо сохранять stylesheet.json в кодировке UTF-8.
linkPageNumMax
Максимальное значение для ссылки-с-номером-страницы. Значение: число
enableTOCPageNum
Добавление номеров страниц к элементам содержания. Значение: true/false
tocPageNumFormat
Формат номеров страниц в содержании. Значение: аналогично linkPageNumFormat, например " %d".
hangingPunctuation
Управление "висячей пунктуацией", т.е. позволяет указать, какие знаки должны висеть. Если указать пустую строку, то ничего висеть не будет. Значение: символы (по умолчанию ".,;:'-")
-----------------------------------------------------
fontFamilies
Шрифты. Раздел содержит следующие настройки:
-----------------------------------------------------
name
Имя шрифта, которое в дальнейшем будет использоваться в настройках стилей различных блоков текста. Значение: произвольное имя, например "Serif".
regular
Путь к обычному шрифту. Значение: путь, включающий название файла шрифта, например "./data/DroidSerif.ttf".
bold
Путь к жирному шрифту.
italic
Путь к курсивному шрифту.
boldItalic
Путь к жирному курсивному шрифту.
-----------------------------------------------------
pageStyle
Разметка страниц. Раздел содержит следующие настройки:
-----------------------------------------------------
pageRotation
Ориентация страницы (поворот на заданную величину в градусах). Значение: 0, 90, 180 или 270
pageWidth, pageHeight
Ширина и высота страницы. Значение: число + mm
marginLeft, marginRight, marginTop, marginBottom
Поля страницы (слева/справа/сверху/снизу). Значение: число + mm
marginMirroring
"Зеркальное" отображение левых/правых полей на чётных/нечётных страницах. Значение: true/false
imageExtraMargins
Управление отступами картинок. Значение: число + pt/mm
sectionNewPage
Начинать часть/главу с новой страницы при заданной степени заполнения страниц. Значение по умолчанию:
sectionNewPage: {
"0": 1.0,
"1": 0.5
},
Эта запись означает следующее:
- Для section с уровнем вложения 0 (то есть верхнего уровня, вероятно "часть") перейти на новую страницу, если свободного места на текущей странице осталось менее 100% (то есть всегда);
- Для section с уровнем вложения 1 (вероятно "глава") перейти на новую страницу, если свободного места на текущей странице осталось менее 50%.
Значение 0.0, равно как и отсутствие значения, будет означать "на новую страницу не переходить".
Примечание: Уровни вложенности обрабатываемых в данном параметре секций можно добавлять (по аналогии с первыми двумя).
backgroundColor
Выбор цвета фона страниц. Значение: html-код цвета.
backgroundImage
Выбор фонового изображения в левый нижний угол каждой страницы. Путь указывается аналогично путям к файлам шрифтов.
Несовместимо с указанием фонового цвета - backgroundColor перекрывает вывод фонового изображения.
header
Верхний колонтитул. Возможные параметры:
- enabled включает или отключает вывод колонтитула на страницах. Значение: true/false
- dynamic включает динамический режим построения колонтитула. Значение: true/false
- chapterTitle содержит XQuery-запрос для извлечения названий из секций любого уровня (элемент section).
При построении колонтитула поддерживается шесть областей (по три для чётных и нечётных страниц), у каждой из которых свои включение/выключение, стиль, рамка, цвет рамки и XQuery-запрос для формирования содержимого (параметры enabled, style, border, borderColor, query):
- leftOdd формирует левую область колонтитула нечётных страниц.
- centerOdd формирует центральную область колонтитула нечётных страниц.
- rightOdd формирует правую область колонтитула нечётных страниц.
- leftEven формирует левую область колонтитула чётных страниц.
- centerEven формирует центральную область колонтитула чётных страниц.
- rightEven формирует правую область колонтитула чётных страниц.
В используемых для построения областей запросах доступны следующие переменные:
$pageNum, $chapterTitle, $bookTitle, $authorFullName, $authorLastName,
$authorFirstLastName, $authorFirstInitialLastName, $authorAllInitialsLastName
Также в запросах доступны функции из файла \data\library.xq.
- обрезающие строку до указанной длины с учетом целостности слов и добавлением многоточия:
fb:сut-right, fb:cut-left
enforcePageSize
Вставка по углам страниц небольших изображений-подпорок. Видимых изменений на странице нет, однако обрезающие "белое" устройства больше не смогут этого делать. Значение: true/false
pageSizeEnforcerColor
Цвет упомянутых выше подпорок. Значение: html-код цвета, например "0xE8E8E8".
footnotes
Включение подстраничных сносок. Значение: true/false
footnotesMaxLines
Сколько строк под сноски выделяется на одной странице. Значение: целое число.
footnoteMaxLines
Сколько строк может быть в одной сноске до её обрезки. Значение: целое число.
tableCellsAutoWidth
Автоподбор ширины колонок таблицы. Значение: true/false
preventWidows
Управление борьбой со вдовами (висячими строками): перед выводом параграфа проверяется оставшееся место на странице, и если оно меньше, чем надо для двух строк - параграф начинается с новой страницы. Значение: true/false
-----------------------------------------------------
hyphenationSettings
Расстановка переносов. Раздел содержит следующие настройки:
-----------------------------------------------------
defaultLanguage
Язык книги по умолчанию. Значение: "ru", "en" и т.п.
overrideLanguage
Игнорировать указанный в книге язык и брать его из параметра defaultLanguage. Значение: true/false
hyphenate
Включение переносов. Значение: true/false
-----------------------------------------------------
transformationSettings
Предварительная трансформация исходного файла.
-----------------------------------------------------
Для предварительного преобразования документа используется язык XQuery. Трансформации, описанные в списке transformationsMap, применяются к исходному документу по очереди, следующим образом:
- элементы, найденные в результате выполнения запроса query, заменяются на результат выполнения запроса morpher;
- строки из queryProlog добавляются перед выполнением в начало всех query;
- строки из morpherProlog добавляются перед выполнением в начало всех morpher;
- в запросах доступны функции из файла \data\library.xq.
Примечание: В связи с появлением трансформаций из списка потенциальных улучшений убраны некоторые пункты, которые возможно реализовать трансформациями.
-----------------------------------------------------
textPreprocessorSettings
Предварительная обработка текста. Раздел содержит следующие настройки:
-----------------------------------------------------
enabled
Включение/отключение обработки. Значение: true/false
makeEndUnbreakable
Предотвращение переноса одного слога в конце абзаца. Значение: true/false
makeReplacements
Включение/отключение замен последовательностей символов. Значение: true/false
replacementsMap
Карта замен. Значение: Первая строка в паре - "что заменять", вторая - "чем заменять".
Примечание 1: Это не просто строки, а регулярное выражение (RegEx), в котором некоторые символы имеют тайный смысл. Например пара "A-Z": "X" читается так: найти строку "A-Z" и заменить на строку "X". А пара "[A-Z]": "X" читается так: любую большую латинскую букву заменить на строку "X" - квадратные скобки являются метасимволами! При необходимости же использовать спецсимволы как обычные, их следует предварять \\. Например, пара "[2]": "Chapter 2" переколбасит ВСЕ двойки, а вот пара "\\[2\\]": "Chapter 2" заменит только "два-в-квадратных-скобках". Подробности можно нагуглить по ключевым словам "java regex".
Примечание 2: Магическое сочетание типа "\u00A0" означает "уникодный символ с шестнадцатиричным номером A0", т.е. в данном случае - неразрывный пробел.
-----------------------------------------------------
paragraphStyles
Стили текста. Раздел допускает следующие настройки:
-----------------------------------------------------
Внимание!
В текущей версии стили, назначенные элементам внутри параграфа, наследуют значения отстутствующих параметров от стиля контейнера.
name
Имя стиля. В конвертере имеются следующие предопределённые стили:
default
Общий стиль по умолчанию, как правило указывается в параметре "baseStyle".
frontMatter
Служебная информация.
title
Заголовок книги.
subtitle
Подзаголовок книги.
author
Автор книги.
tocTitle
Заголовок оглавления книги.
tocItem
Пункт оглавления книги.
annotation
Аннотация.
annotationSubtitle
Заголовок аннотации.
bodyTitle
Заголовок тела книги.
sectionTitle
Заголовок раздела.
subSectionTitle
Заголовок подраздела первого уровня.
subSubSectionTitle
Заголовок подраздела второго уровня.
body
Тело книги.
bodySubtitle
Подзаголовок тела книги.
bodyDropCap
Буквица.
Примечание: Буквица не есть параграф – не все параметры параграфа имеют смысл для бувицы.
footnote
Подстраничные сноски.
header
Верхний колонтитул.
poem
Стихотворение/поэма.
Примечание: стандартные стили poemTitle, poemAuthor, poemDate, epigraphAuthor, citeSubtitle и citeAuthor удалены. Соответствующие элементы теперь выводятся стилями своих контейнеров (poem, epigraph, cite). Если нужно определить для них отличающиеся от контейнера стили, то это можно сделать при помощи selector'ов.
epigraph
Эпиграф.
cite
Цитата.
code
Код как стиль текста (как правило моноширинный).
codeParagraph
Параграф, содержащий внутри себя только элемент <code>.
Примечание: Такая конструкция удобна для листингов: <p><code>Код</code></p>.
table
Таблица.
tableTD
Ячейка таблицы.
tableTH
Заголовочная ячейка таблицы.
comment
Комментарий к стилю. Значение: текстовая строка.
baseStyle
Стиль, используемый как базовый для другого стиля. Значение: имя стиля, заданное в параметре name.
dropcapStyle
Стиль буквицы. Значение: имя стиля, заданное в параметре name.
inlineImageZoom
Масштабирование inline-картинок. Значение: число (по умолчанию 1.0, т.е. оригинальный размер).
inlineImageOffsetY
Позиционирование inline-картинок по вертикали. Значение: число (по умолчанию 0.0, т.е. без сдвига).
fontFamily
Семейство шрифта. Выбирается из заданных в разделе "fontFamilies". Значение: имя шрифта, заданное в параметре name.
fontStyle
Начертание шрифта. Выбирается из заданных в разделе "fontFamilies". Значения: regular / bold / italic / bolditalic
fontSize
Размер шрифта. Значение: число + pt/em
Примечание: При использовании baseStyle может указываться в % от базового стиля.
color
Цвет шрифта. Значение: html-код цвета
alignment
Выравнивание текста. Значение: left / right / center / justified
spacingBefore
Интервал перед параграфом. Значение: число + pt/em
spacingAfter
Интервал после параграфа. Значение: число + pt/em
firstSpacingBefore
Интервал перед параграфом, действует только на первый параграф в секции. Значение: число + pt/em
lastSpacingAfter
Интервал после параграфа, действует только на последний параграф в секции. Значение: число + pt/em
leftIndent
Отступ текста от левого края страницы. Применяется ко всему тексту (в отличие от "красной строки"). Значение: число + pt/em
rightIndent
Отступ текста от правого края страницы. Также применяется ко всему тексту. Значение: число + pt/em
firstLineIndent
Отступ первой строки абзацев (красная строка). Значение: число + pt/em
firstFirstLineIndent
Отдельный параметр отступа для первого абзаца. Значение: число + pt/em
disableHyphenation
Запрет переносов для отдельных стилей. Значение: true/false
leading
Межстрочное расстояние. Значение: число + pt/em
Примечание: В подстраничных сносках нельзя установить межстрочное расстояние меньше, чем расстояние от ascent до descent для данного шрифта.
preserveWhitespaces
Удаление из текста символов перевода строки и множественных пробелов. Значение: true/false
characterSpacing
Уменьшение/увеличение межбуквенного расстояния на указанную величину. Значение: число
horizontalScaling
Сжатие/растяжение букв по горизонтали с указанным коэффициентом. Значение: число
strokeWidth
Ширина линии контура букв. Можно поставить "0.1", "0.2" и т.п. Эффект будет зависеть от выбранной для просмотра PDF программы, вычислительной мощности конкретного устройства и свойств его экрана. Положительный эффект не гарантируется. Значение по умолчанию: "0.0"
По сообщениям пользователей:
- на Kindle Paperwhite эффекта не имеет
- на Pocketbook Touch работает нормально
selector
Параметр позволяет назначить нестандартный стиль определенным элементам (как в трансформациях, но более лаконично).
Значение данного параметра соответствует "query" в трансформациях. Включение/выключение трансформаций на эту функцию не влияет, она подключена всегда. В настройках по умолчанию эта функция используется для назначения двух разных стилей двум разным вариантам применения тега code - внутри текста и отдельным параграфом. Подобным же образом можно назначить, например, стихам внутри цитат стиль, отличный от просто стихов, отменить действие strong внутри заголовка и т.д.