djvumake (DjVuLibre)

Z thewoodcraft.org
Stránka byla naposledy editována 17.8.2023

Utilita djvumake sestavuje (podobně jako csepdjvu), z jednotlivých vrstev DjVu soubor.

V tomto případě se však DjVu soubor sestavuje z již hotových komponent, které lze získat kompresí obrazových souborů pomocí cjb2, cjb2 případně cpaldjvu, případně jejich extrakcí z různých DjVu souborů pomocí utility djvuextract a jejich následným sestavením do nového DjVu souboru, ve kterém lze kupř. kombinovat různé masky, obrázky, atp.

Použití djvumake

djvumake výstupní_djvu_soubor [ identifikátor vrstvy=cesta_k_souboru]
PříkladVytvoření DjVu souboru ze souboru v PAM formátu, s aplikací připravené černobílé masky (v PBM formátu) enkódované do djvu přes cjb2
djvumake vystupni.djvu Sjbz=maska.djvu PPM=obraz.pnm

V tomto případě se černobílá maska aplikuje při generování obrazových vrstev pozadí na vstupní plnobarevný soubor obraz.pnm podobným způsobem, jako kdybychom použili masku u c44. Rozdíl je především v tom, že se se při sestavování DjVu souboru přes djvumake zřejmě aplikují mechanismy, které nastavují optimální počty řezů (slices) při generování obrazových vrstev pozadí a popředí.

Z hlediska zpracování se mi uvedený způsob vytvoření DjVu souboru osvědčil jako nejefektivnější. Pokud bychom chtěli sestavit DjVu dokument z jednotlivých vrstev, tak bychom je nejprve museli vytáhnout přes djvuextract z již enkódovaných souborů a teprve pak bychom je mohli opět sestavit do jednoho celku.
Přehled identifikátorů a jejich možnosti při importu

Jak je z uvedeného zřejmé, identifikátory odpovídají kódům vrstev o kterých se podrobně píše v kapitole Anatomie DjVu dokumentu. V rámci této kapitoly jsou uvedeny především z toho důvodu, aby bylo jasné, jaké typy dat se v případě jejich použití akceptují.

Typ vrstvy Parametry při použití Poznámka
INFO=w,h,dpi Validní minimalistický DjVu soubor musí obsahovat minimálně vrstvu INFO, která udává rozměry dokumentu a jeho DPI. Na základě těchto údajů se totiž vypočítávají souřadnice objektů u skryté textové vrstvy a metadatových elementů (hyperlinky, zvýrazněné oblasti, atp.) S výhodou lze využít vytvoření "slepého" dokumentu pokud potřebujeme překonvertovat obsah textové vrstvy z .xml formátu do formátu .dsed. DjVuXML má totiž ve své specifikaci natvrdo nastavené jméno stránky ke které obsah patří a při importu přes djvuxmlparser nahrazuje nejenom obsah skryté textové vrstvy, ale také aktuální metadata, za metadata co existovala v okamžiku exportu do .xml souboru. Takže se při importu DjVuXML souboru nenávratně zruší veškerá metadata, co se v dokumentu objevila v mezidobí od exportu po okamžik importu.
Sjbz=soubor.jb2 Jako masku lze použít bitonální soubor DjVu enkódovaný přes cjb2. Použití předpřipravené masky a výchozího obrázku v PPM formátu je nejefektivnější způsob vytvoření DjVu dokumentu, neboť bitonální (černobílou) masku lze předem připravit s využitím nejrůznějších algoritmů, přičemž lze podle potřeby zpracovávat vybrané oblasti výchozího skenu různými metodami, tak abychom pak dostali při aplikaci této masky na PPM soubor optimální výsledek.
Smmr=soubor.mmr Alternativním formátem pro masku je bitonální soubor enkódovaný algoritmem G4, který používá TIFF
BG44=soubor.iw44[:n] Jako pozadí lze použít DjVu soubor vytvořený přes c44. Parametrem n lze omezit počet importovaných řezů, pokud nevadí vyšší míra artefaktů na obraze pozadí. Jejich absenci by totiž měla do určité míry být schopna nahradit aplikace masky.
BGjp=soubor.jpg Pozadí dokumentu může tvořit i soubor ve formátu JPG
BG2k=soubor.jp2 Teoreticky může pozadí dokumentu tvořit i soubor ve formátu JPEG-2000 (.jp2) Bohužel, v praktickém nasazení to nedává smysl, protože zobrazování pozadí ve formátu JPEG-2000 nepodporuje žádný DjVu prohlížeč. Je to z toho důvodu, že u formátu JPEG-2000 je velmi náročný proces dekomrese, a generování náhledů takových stránek by brzdilo načítání stránek Na druhou stranu použití této vrstvy otevírá možnost vkládat do DjVu dokumentu také originál dokumentu v archivní kvalitě, neboť formát JPEG-2000 je bezztrátový. Tím pádem lze vytvořit dokument, kterým je možné rychle listovat, po aplikaci OCR v něm rychle vyhledávat a zároveň, v případě potřeby, z něj i vytáhnout vybranou oblast původního skenu v maximálním detailu. Bohužel však většina DjVu prohlížeček s existencí této vrstvy nepočítá, takže dokument nezobrazí vůbec, a djview v případě takového dokumentu řve, že má dokument duplicitní pozadí.
FGbz=( soubor.jb2 | #barva[:x,y,w,h] ) Jako vrstvu popředí lze použít buď soubor s obrazem v indexovaných barvách, vytvořený přes cpaldjvu, nebo ji lze – v případě že to má být pravoúhlá jednobarevná plocha – nastavit parametricky. Pořadí parametrů je následující:
  1. RGB barva
  2. souřadnice levého dolního roku pravoúhlé plochy (x, y), přičemž bod nula je v levém dolním rohu celého dokumentu.
  3. a její šířka a výška (w, h)

Pozor! Na výsledek má nezanedbatelný vliv DPI dokumentu. Základní rozměr plochy totiž vychází právě z něj. Kupř. jsou-li součty x+w a y+h menší než hodnota DPI, je vygenerován pravoúhlý objekt, jehož strana odpovídá hodnotě DPI, umístěný do levého dolního rohu. V případě dokumentu co má 300dpi, tedy nelze vytvořit menší barevnou plochu popředí než 300x300dpi, kterou bude možné v rámci dokumentu umístit pouze na pozice x,y dané násobky 300.

Nastavení jednobarevného popředí má reálné využití pouze v případě, že je obsahem dokumentu pouze bitonální maska s textem, či kresbou. Díky nastavení barevného pozadí pro určitou oblast lze dosáhnout změnu obarvení. Pokud by těchto oblastí mělo být více, nebo by měla být kresba obarvena více barvami, je lepší nejprve vrstvu popředí připravit jako PNM soubor, pak ji enkódovat pomocí cpaldjvu a následně ji použít. Buď přímo, nebo nejdříve vytáhnout přes djvuextract a použít samostatně.
FG44=soubor.iw44 U dokumentů, které obsahují fotografie je lepší na vrstvu popředí použít podobný způsob komprese, jako se používá obvykle na pozadí. Taková vrstva se automaticky vytvoří kupř. pokud aplikujeme bitonální masku na PPM soubor. Černý text (a vybrané černé plochy v místech kde budou fotografie) je pak součástí masky, ilustrace jsou v popředí a pozadí může být tím pádem velice efektivně redukováno na minimum. V případě popředí se nepoužívají řezy, protože jde obvykle o menší objem dat, který se mnohem rychleji zpracovává, než barevně komplikovaná oblast pozadí.
FGjp=soubor.jpg Pokud popředí dokumentu tvoří celostránková fotografie, může být rovnou vložena do vrstvy popředí. Bohužel formát JPG nepodporuje průhlednost, takže v takovém případě bude pozadí zobrazeno pouze tam, kde bude popředí odfiltrováno pomocí masky. V reálném nasazení však použití JPEG souborů nedává smysl, protože tím razantně narůstá objem výsledného dokumentu. Místo 1MB, tak může mít kvůli jednomu obrázku takový dokument třeba 12MB, atp.
FG2k=soubor.jp2
INCL=identifikátor Jde o speciální vrstvu, která se používá v případě, že dokument používá vrstvu Djbz se sdílenými tvary masky.
Djbz=soubor.jb2 Vytvoří sdílený slovník černobílých tvarů v jb2 formátu. Bohužel zatím nevím jak má vypadat příslušný jb2 soubor
PPM=soubor.ppm V případě sestavování DjVu souboru ze souboru ve formátu PPM musí být zároveň použita černobílá maska (vrstva Sjbz). Obrazové vrstvy popředí a pozadí se pak vygenerují s jejím použitím automaticky.