## Nazwa

pdf2djvu — tworzy pliki DjVu z plików PDF

## Streszczenie

`pdf2djvu` [ { `-o` | `--output` } `plik-wyjściowy-djvu` ] [`opcja`...] `plik-pdf`...

`pdf2djvu` { `-i` | `--indirect` } `plik-indeksowy-djvu` [`opcja`...] `plik-pdf`...

`pdf2djvu` { `--version` | `--help` | `-h` }

## Opis

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

## Opcje

pdf2djvu 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.

`--pageid-template=`szablon``

  Określa schemat nazewnictwa identyfikatorów stron. Opis języka szablonów znajduje się w rozdziale „Język szablonów”.

  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`.

`--pageid-prefix=`prefiks``

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

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

  Określa schemat tytułów stron. Opis języka szablonów znajduje się w rozdziale „Język szablonów”.

  Domyślnie tytuły nie są ustawiane.

### 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 jest respektowna 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.

  ### Uwaga

  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 poddawaj tekstu normalizacji NFKC.

`--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`). 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 pdf2djvu 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`

  pdf2djvu 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

`page`, `spage`

  Numer strony w dokumencie PDF.

`dpage`

  Numer strony w dokumencie DjVu.

## Szczegóły implementacji

### Algorytm separacji warstw

Jeżeli nie użyto opcji `--monochrome`, pdf2djvu 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 pdf2djvu proszę zgłaszać w systemie śledzenia problemów.

## Zobacz też

djvu(1), djvudigital(1), csepdjvu(1)