Справочник

Настройки конвертера 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 внутри заголовка и т.д.