# руководство по &p;

&p;

1 &version;

&p;

создаёт DjVu-файлы из PDF-фалов

    &p;   -o --output  результирующий-djvu-файл
     параметр pdf-файл

    &p;   -i --indirect  файл-индекса-djvu
    параметр
    pdf-файл

    &p;  --version --help -h

## Описание

Программа создаёт DjVu-файл из одного или нескольких Portable Document Format файлов.

## Параметры

`&p;` допускает следующие параметры:

### Тип документа, имена файлов

`-o`

`--output=``результирующий-djvu-файл```

- Создать объединённый многостраничный документ. Записать файл в ``результирующий-djvu-файл`` вместо стандартного вывода.

`-i`

`--indirect=``файл-индекса-djvu```

- Создать раздельный многостраничный документ. Использовать ``файл-индекса-djvu`` как имя файла индекса; поместить файлы-компоненты в один и тот же каталог. Каталог должен существовать и иметь разрешение на запись.

`--page-id-template=`шаблон``

- Устанавливает схему именования идентификаторов страниц. Обратитесь за справкой к template-language.title секции описания языка шаблонов.

  Шаблон по умолчанию `p{page:04*}.djvu`.

  По причине портабельности идентификатор страницы:

  - должен состоять только из строчных ASCII букв, цифр, `_`, `+`, `-` и точки,

  - не может начинаться с `+`, `-` или точки,

  - не может включать две последовательные точки,

  - должен заканчиваться расширением `.djvu` или `.djv`.

`--page-id-prefix=`префикс``

- Эквивалентно `--page-id-template=`префикс`{page:04*}.djvu`.

`--page-title-template=`шаблон``

- Устанавливает шаблон заголовков страниц. Обратитесь за справкой к секции описания языка шаблонов template-language.title.

  Шаблон по умолчанию `{label}`.

`--no-page-titles`

- Не устанавливать заголовки страницы.

### Разрешение, размер страницы

`-d`

`--dpi=`разрешение``

- Устанавливает желаемое разрешение `разрешение` точек на дюйм. По умолчанию 300 dpi. Разрешённый диапазон: 72 ≤ `разрешение` ≤ 6000.

`--media-box`

- Использовать MediaBox для определения размера страницы. По умолчанию используется CropBox.

`--page-size=`ширина`x`высота``

- Устанавливает предпочитаемый размер страницы в `ширина` пикселов × `высота` пикселов. Действительный размер страницы может изменяться для соблюдения соотношения и из-за ограничений DjVu. (Этот параметр имеет приоритет над `-d`/`--dpi`.)

`--guess-dpi`

- Попробовать предположить оригинальное разрешение проверяя внедрённые изображения. Используйте с осторожностью.

### Качество изображения

`--bg-slices=`n`+`…`+`n``

`--bg-slices=`n`,`…`,`n``

- Устанавливает качество кодирования фонового слоя IW44. Этот параметр похож на параметр `-slice` для `c44`. Обратитесь за справкой к man-странице

  c44

  1 . По умолчанию `72+11+10+10`.

`--bg-subsample=`n``

- Устанавливает отношение подвыборки фона. По умолчанию 3. Допустимые значения находятся между 1 и 12 включительно.

`--fg-colors=default`

- Попробовать сохранить все цвета переднего плана. Используется по умолчанию.

`--fg-colors=web`

- Уменьшить количество цветов переднего плана до web-палитры (216 цветов). Не рекомендуется использовать.

`--fg-colors=`n``

- Использует GraphicsMagick для уменьшения количества явных цветов в слое переднего плана. Допустимые значения от 1 до 4080. Не рекомендуется использовать.

`--fg-colors=black`

- Не использовать любую информацию о цветах из слоя переднего плана.

`--monochrome`

- Рендерить страницы как монохромные изображения. С этим параметром опции `--bg-`…`` и `--fg-`…`` не принимаются во внимание.

`--loss-level=`n``

- Устанавливает агрессивность компрессии с потерями. По умолчанию 0 (без потерь). Допустимые значения от 0 до 200 включительно. Этот параметр похож на параметр `-losslevel` для `cjb2`. Обратитесь за справкой к man-странице

  cjb2

  1 . Этот параметр принимается во внимание только вместе с параметром `--monochrome`.

`--lossy`

- Равносильно `--loss-level=100`.

`--anti-alias`

- Разрешить сглаживание шрифтов и векторной графики. Не рекомендуется использовать.

### Извлечение

`--no-metadata`

- Не извлекать метаданные.

  По умолчанию:

  - Извлекаются следующие значения информации документа: `Title`, `Author`, `Subject`, `Creator`, `Producer`, `CreationDate`, `ModDate`. Временные отметки форматируются согласно стандарту RFC 3999. Дата и время разделены одиночным пробелом.

  - Соответственно извлекаются (или создаются) и обновляются метаданные XMP.

  В случае нескольких входных документов используются только метаданные из первого.

`--verbatim-metadata`

- Сохранять метаданные нетронутыми.

`--no-outline`

- Не извлекать оглавление документа.

`--hyperlinks=border-avis`

- Делать границы ссылок всегда видимыми.

  По умолчанию границы ссылок становятся видимыми только при наведении на ссылку мыши.

`--hyperlinks=#`RRGGBB``

- Принудительно использовать заданный цвет для границы ссылок.

`--no-hyperlinks`

`--hyperlinks=none`

- Не извлекать ссылки.

`--no-text`

- Не извлекать текст.

`--words`

- Извлечь текст. Записать расположение каждого слова. Используется по умолчанию.

`--lines`

- Извлечь текст. Записать расположение каждой строки, а не слова.

`--crop-text`

- Не извлекать текст, который находится за пределами страницы.

`--no-nfkc`

- Не применять NFKC нормализацию к тексту за исключением символов из Alphabetic Presentation Forms block (U+FB00–U+FB4F), которые нормализованы безоговорочно.

  По умолчанию применяется NFKC нормализация для всех символов.

`--filter-text=`командная строка``

- Фильтровать текст через `командная строка`. Данный фильтр должен сохранить пробелы, управляющие символы и десятичные цифры.

  Этот параметр подразумевает `--no-nfkc`.

`-p`

`--pages=`диапазон-страниц``

- Устанавливает страницы для конвертирования. `диапазон-страниц` — это разделяемый запятыми список поддиапазонов. Каждый поддиапазон является одиночной страницей (например, `17`) или последовательным диапазоном страниц (например, `37-42`). Повторяющиеся номера страниц не допускаются. Страницы нумеруются с 1.

  По умолчанию конвертируются все страницы.

### Производительность

`-j`

`--jobs=`n``

- Использовать `n` потоков для конвертации. По умолчанию используется один поток.

`-j0`

`--jobs=0`

- Определить автоматически, сколько потоков использовать для конвертации.

### Подробности, справка

`-v`

`--verbose`

- Показывать больше информационных сообщений при конвертации файла.

`-q`

`--quiet`

- Не показывать информационные сообщения при конвертации файла.

`--version`

- Вывести информацию о версии и выйти.

`-h`

`--help`

- Показать справку и выйти.

## Окружение

Следующие переменные окружения оказывают влияние на `&p;` в Unix-системах:

`OMP_`*``

- Поведением, с точки зрения распараллеливания, можно управлять с помощью нескольких переменных окружения. За деталями обратитесь к спецификации OpenMP API.

`TMPDIR`

- `&p;` интенсивно использует временные файлы. Программа сохраняет их в каталоге заданном этой переменной. По умолчанию `/tmp`.

## Язык шаблонов

### Синтаксис шаблонов

Язык шаблонов использует как образец синтаксис форматирования строк в Python.

Шаблон — это текст, который содержит поля, окружённые фигурными скобками `{``}`. Когда шаблон применяется, поля заменяются соответствующим образом отформатированными значениями. Кроме того, `{{` и `}}` заменяются одиночными `{` и `}` соответственно.

### Синтаксис полей

Каждое поле состоит из имени переменной, за которым может следовать сдвиг (не обязательно) и спецификация формата (не обязательно).

Сдвиг — целое число со знаком (т. е. начинающееся на `+` or `-`).

Формат спецификации включает двоеточие, а затем спецификатор ширины поля.

Спецификатор ширины поля — это целое десятичное число определяющее минимальную ширину поля. Если не указано, тогда ширина поля вычисляется по содержимому. Предшествующий спецификатору знак нуля (`0`) делает возможным заполнение нулями.

После спецификатора ширины поля может располагаться знак звёздочки (`*`), что увеличивает минимальную ширину поля до максимально возможной длины переменной.

### Доступные переменные

`dpage`

- Количество страниц в документе DjVu.

`page`

`spage`

- Количество страниц в документе PDF.

`label`

- Метка страницы (логический номер страницы) в документе PDF.

  Эта переменная доступна только для заголовков страницы.

## Детали реализации

### Алгоритм разделения слоёв

Если не используется параметр `--monochrome`, &p; использует следующий простой алгоритм:

1. Для каждой страницы сделать следующее:

   1. Преобразовать страницу в растровое изображение обычным порядком.

   2. Преобразовать страницу в другое растровое изображение пропуская следующие элементы страницы:

      - текст,

      - растровые изображения с глубиной 1 бит на пиксел,

      - векторные элементы (за исключением больших заполненных площадей).

   3. Сравнить оба изображения, пиксел за пикселом:

      1. Если их цвета совпадают, классифицировать пиксел как часть фонового слоя.

      2. В противоположном случае классифицировать пиксел как часть слоя переднего плана.

## Сообщения об ошибках

Если вы нашли ошибку в &p;, сообщите о ней в баг-трекер или в список рассылки.

## Смотрите также

djvu

1 ,

djvudigital

1 ,

csepdjvu

1