# podręcznik &p;

&p;

1 &version;

&p;

tworzy pliki DjVu z plików PDF

    &p;   -o --output  plik-wyjściowy-djvu
    opcja plik-pdf

    &p;   -i --indirect  plik-indeksowy-djvu
    opcja plik-pdf

    &p;  --version --help -h

## Opis

Program ten tworzy plik DjVu na podstawie jednego lub więcej plików w formacie Portable Document Format.

## Opcje

`&p;` przyjmuje następujące opcje:

### Typ dokumentu, nazwy plików

`-o`

`--output=``plik-wyjściowy-djvu```

- Utwórz spakowany dokument wielostronicowy. Zapisz wynik do ``wyjściowego-pliku-djvu`` zamiast na standardowe wyjście.

`-i`

`--indirect=``indeksowy-plik-djvu```

- Utwórz rozdzielony dokument wielostronicowy. Jako nazwy pliku indeksowego użyj ``pliku-indeksowego-djvu``; pliki składowe umieść w tym samym katalogu. Katalog musi istnieć z prawami do zapisu.

`--page-id-template=`szablon``

- Określa schemat nazewnictwa identyfikatorów stron. Opis języka szablonów znajduje się w rozdziale template-language.title.

  Domyślny szablon to `p{page:04*}.djvu`.

  Aby umożliwić przenośność, identyfikatory stron:

  - muszą składać się tylko z małych liter ASCII, cyfr, znaków `_`, `+`, `-` i kropki,

  - nie mogą zaczynać się od znaku `+`, `-` ani kropki,

  - nie mogą zawierać dwóch kropek z rzędu,

  - muszą kończyć się rozszerzeniem `.djvu` lub `.djv`.

`--page-id-prefix=`prefiks``

- Równoważność `--page-id-template=`prefiks`{page:04*}.djvu`.

`--page-title-template=`szablon``

- Określa schemat tytułów stron. Opis języka szablonów znajduje się w rozdziale template-language.title.

  Domyślny szablon to `{label}`.

`--no-page-titles`

- Nie ustawiaj tytułów stron.

### Rozdzielczość, wielkość strony

`-d`

`--dpi=`rozdzielczość``

- Określa, że pożądaną rozdzielczością jest `rozdzielczość` punktów na cal. Domyślną wartością jest 300 dpi. Dopuszczalny zakres to: 72 ≤ `rozdzielczość` ≤ 6000.

`--media-box`

- Do określenia rozmiaru strony użyj MediaBox. Domyślnie używane jest CropBox.

`--page-size=`szerokość`x`wysokość``

- Określa, że preferowanym rozmiarem strony jest `szerokość` pikseli × `wysokość` pikseli. Faktyczny rozmiar strony może zostać zmieniony, by zachować proporcje obrazu i wymogi DjVu dot. rozdzielczości. (Ta opcja ma pierwszeństwo nad `-d`/`--dpi`.)

`--guess-dpi`

- Spróbuj odgadnąć pierwotną rozdzielczość poprzez ogląd osadzonych obrazów. Używać ostrożnie.

### Jakość obrazu

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

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

- Określa jakość kompresji warstwy tła IW44. Opcja ta jest podobna do opcji `-slice` programu `c44`. Szczegóły znajdują się w podręczniku

  c44

  1 . Domyślną wartością jest `72+11+10+10`.

`--bg-subsample=`n``

- Określa współczynnik podpróbkowania tła. Domyślną wartością jest 3. Dopuszczalne wartości to liczby całkowite od 1 do 12 włącznie.

`--fg-colors=default`

- Staraj zachować się wszystkie kolory pierwszego planu. Tak jest domyślnie.

`--fg-colors=web`

- Zredukuj kolory pierwszego planu do palety WWW (216 kolorów). Ta opcja nie jest zalecana.

`--fg-colors=`n``

- Użyj GraphicsMagicka do zredukowania do `n` liczby różnych kolorów na pierwszym planie. Dopuszczalne wartości to liczby całkowite od 1 do 4080. Ta opcja nie jest zalecana.

`--fg-colors=black`

- Odrzuć informacje o kolorach pierwszego planu.

`--monochrome`

- Rastruj strony jako dwukolorowe bitmapy. W takim wypadku opcje `--bg-`…`` i `--fg-`…`` nie są respektowane.

`--loss-level=`n``

- Określa agresywność kompresji stratnej. Domyślną wartością jest 0 (kompresja bezstratna). Dopuszczalne wartości to liczby całkowite od 0 do 200 włącznie. Opcja ta jest podobna do opcji `-losslevel` programu `cjb2`; szczegóły znajdują się w podręczniku

  cjb2

  1 . Opcja ta może być używana tylko razem z opcją `--monochrome`.

`--lossy`

- Synonim `--loss-level=100`.

`--anti-alias`

- Włącz antyaliasing fontów i grafiki wektorowej. Ta opcja nie jest zalecana.

### Wyodrębnianie

`--no-metadata`

- Nie wyodrębniaj metadanych.

  Domyślnie:

  - Wyodrębniane są następujące hasła słownika informacji o dokumencie: `Title`, `Author`, `Subject`, `Creator`, `Producer`, `CreationDate`, `ModDate`. Zapisy daty i czasu są formatowane wg RFC 3999, z datą i czasem oddzielonymi pojedynczą spacją.

  - Metadane XMP są wyodrębniane (lub tworzone) i odpowiednio aktualizowane.

  W przypadku wielu dokumentów wejściowych, tylko metadane pierwszego z nich są brane pod uwagę.

`--verbatim-metadata`

- Zachowaj oryginalne metadane bez zmian.

`--no-outline`

- Nie wyodrębniaj konspektu dokumentu.

`--hyperlinks=border-avis`

- Spraw, by ramki hiperłączy były zawsze widoczne.

  Domyślnie ramka hiperłącza jest widoczna tylko gdy nad nim znajduje się kursor myszki.

`--hyperlinks=#`RRGGBB``

- Wymuś określony kolor ramki hiperłączy.

`--no-hyperlinks`

`--hyperlinks=none`

- Nie wyodrębniaj hiperłączy.

`--no-text`

- Nie wyodrębniaj tekstu.

`--words`

- Wyodrębniaj tekst. Zapisz położenia każdego słowa. Tak jest domyślnie.

`--lines`

- Wyodrębniaj tekst. Zapisz położenia każdej linii, a nie każdego słowa.

`--crop-text`

- Nie wyodrębniaj tekstu, który znajduje się poza granicami strony.

`--no-nfkc`

- Nie stosuj normalizacji NFKC, z wyjątkiem znaków z bloku Alfabetycznych Form Prezentacyjnych (U+FB00–U+FB4F), które są normalizowane bezwarunkowo.

  Domyślnie normalizacja NFKC stosowana jest do wszystkich znaków.

`--filter-text=`linia-poleceń``

- Przefiltruj tekst przez `linię-poleceń`. Dany filtr musi zachowywać białe znaki, znaki kontrole i cyfry dziesiętne.

  Opcja ta implikuje `--no-nfkc`.

`-p`

`--pages=`zakres stron``

- Określa strony przeznaczone do konwersji. `zakres-stron` jest oddzielaną przecinkami listą podzakresów. Każdy podzakres to albo pojedyncza strona (np. `17`), albo ciągły zakres stron (np. `37-42`). Numery stron nie mogą się powtarzać. Strony numerowane są od 1.

  Domyślnie konwertowane są wszystkie strony.

### Wydajność

`-j`

`--jobs=`n``

- Użyj `n` wątków do przeprowadzenia konwersji. Domyślnie używany jest jeden wątek.

`-j0`

`--jobs=0`

- Określ liczbę wątków używanych do przeprowadzenia konwersji automatycznie.

### Gadatliwość, pomoc

`-v`

`--verbose`

- Wyświetlaj więcej komunikatów informacyjnych podczas konwersji pliku.

`-q`

`--quiet`

- Nie wyświetlaj komunikatów informacyjnych podczas konwersji pliku.

`--version`

- Wyświetl informację o wersji i wyjdź.

`-h`

`--help`

- Wyświetl pomoc i wyjdź.

## Środowisko

Następujące zmienne środowiskowe mają wpływ na działanie `&p;` w systemach uniksowych:

`OMP_`*``

- Zachowanie programu pod względem współbieżności można kontrolować za pomocą kilku zmiennych środowiskowych. Szczegóły opisane są w specyfikacji API OpenMP.

`TMPDIR`

- `&p;` intensywnie używa plików tymczasowych. Są one składowane w katalogu określonym przez tę zmienną. Domyślną wartością jest`/tmp`.

## Język szablonów

### Składnia szablonów

Język szablonów jest z grubsza wzorowany na składni formatowania napisów w języku Python.

Szablon to kawałek tekstu zawierający pola, otoczone klamrami `{``}`. Kiedy szablon jest wyliczany, pola zastępowane są odpowiednio sformatowanymi wartościami. Ponadto ciąg `{{` jest zastępowany pojedynczym `{` a ciąg `}}` — pojedynczym `}`.

### Składnia pól

Każde pole składa się z nazwy zmiennej, po której opcjonalnie następuje przesunięcie, po którym opcjonalnie następuje specyfikacja formatu.

Przesunięcie jest liczbą całkowitą ze znakiem (tj. zaczynającą się znakiem `+` lub `-`).

Specyfikacja formatu składa się z dwukropka, po którym następuje specyfikacja szerokości.

Specyfikacja szerokości jest liczbą całkowitą definiującą minimalną szerokość pola. W przypadku braku definicji, szerokość zostanie określona na podstawie treści. Poprzedzenie specyfikacji szerokości zerem (`0`) powoduje dopełnianie zerami.

Po specyfikacji szerokości może opcjonalne nastąpić znak gwiazdki (`*`), który zwiększa minimalną szerokość pola do największej możliwej długości zawartości zmiennej.

### Dostępne zmienne

`dpage`

- Numer strony w dokumencie DjVu.

`page`

`spage`

- Numer strony w dokumencie PDF.

`label`

- Etykieta strony (logiczny numer strony) w dokumencie PDF.

  Ta zmienna jest dostępna tylko w tytułach stron.

## Szczegóły implementacji

### Algorytm separacji warstw

Jeżeli nie użyto opcji `--monochrome`, &p; używa następującego naiwnego algorytmu separacji warstw:

1. Dla każdej strony wykonaj co następuje:

   1. Zrastruj stronę do mapy pikseli w zwykły sposób.

   2. Zrastruj stronę do innej mapy pikseli, z pominięciem następujących elementów strony:

      - tekst,

      - obrazy rastrowe o głębokości 1 bit na piksel,

      - elementy wektorowe (oprócz wypełnień o dużej powierzchni).

   3. Porównaj obie mapy pikseli, piksel po pikselu:

      1. Jeżeli kolory się zgadzają, zaklasyfikuj piksel jako część warstwy tła.

      2. W przeciwnym wypadku, zaklasyfikuj piksel jako część pierwszego planu.

## Raporty o błędach

Błędy znalezione w &p; proszę zgłaszać w systemie śledzenia problemów lub na liście dyskusyjnej.

## Zobacz też

djvu

1 ,

djvudigital

1 ,

csepdjvu

1