Difference between revisions of "djvm (DjVuLibre)"

From DCEwiki
Jump to: navigation, search
m
m
 
Line 2: Line 2:
 
[[ddjvu (DjVuLibre)|ddjvu]] | [[djvmcvt (DjVuLibre)|djvmcvt]] |
 
[[ddjvu (DjVuLibre)|ddjvu]] | [[djvmcvt (DjVuLibre)|djvmcvt]] |
 
}}[[Kategorie:DjVu]]</noinclude><includeonly>=== djvm ===</includeonly>
 
}}[[Kategorie:DjVu]]</noinclude><includeonly>=== djvm ===</includeonly>
 +
Toto je nástroj, který umožňuje skládat DjVu stránky do vícestránkových DjVu svazků, vkládat do nich stránky nové a případně je i mazat.
 +
 +
==== Použití djvm ====
 +
Za celou řadu let co pracuji s DjVu dokumenty jsem použil tuto utilitu prakticky pouze ke dvěma účelům:
 +
* K sestavování DjVu dokumentů do DjVu svazků
 +
* A k odstraňování stránek s DjVu svazků
 +
 +
K výpisu obsahu DjVu dokumentů totiž mnohem lépe poslouží [[djvused (DjVuLibre)|djvused]].
 +
 +
===== Sestavení DjVu svazku =====
 +
'''djvm -c[reate]''' ''nový_djvu_svazek'' ''první_strana_v_djvu'' '''…''' ''x_tá_strana_v_djvu''
 +
 +
Toto je nejjednodušší způsob sestavení několika DjVu souborů do jednoho svazku.
 +
===== Přidání nové stránky do DjVu svazku =====
 +
'''djvm -i[nsert]''' ''existující_djvu_svazek'' ''další_strana_v_djvu'' '''[''' ''pozice_stránky'' ''']'''
 +
 +
Toto je jediný způsob, jakým lze do již existujícího DjVu svazku korektně přidat na vybranou pozici novou stránku.
 +
 +
Není-li uvedeno číslo pozice, nebo pokud je uvedené číslo vyšší než aktuální počet stran v DjVu svazku, je stránka automaticky přiřazena na konec. V ostatních případech dojde k přečíslování pořadí stran následujících za příslušnou pozicí.
 +
 +
{{Poznámka|Tímto způsobem lze do DjVu svazku vložit nejenom ''single-page'' ale také celý DjVu svazek najednou. V takovém případě však dojde k vytvoření samostatné metadatové vrstvy. Sloučení metadatových vrstev lze provést pouze manuálně}}
 +
===== Vyjmutí stránky z DjVu svazku =====
 +
'''djvm -d[elete]''' ''aktualizovaný_djvu_svazek'' ''pozice_stránky''
 +
Toto je jediný způsob, jakým lze z DjVu svazku korektně odstranit vybranou stránku.
 +
{{Pozor|Při odstraňování stránek z DjVu svazku se pracuje pouze s pořadovým číslem stránky!!!}}
 +
 +
===== Vylistování stránek z DjVu svazku =====
 +
'''djvm -l[ist]''' ''djvu_svazek''
 +
 +
Výpis pak vypadá asi takto:
 +
 +
user@stroj:~$ djvm -l svazek.djvu
 +
Size    Type        Name
 +
--------------------------
 +
  22076  PAGE #1    p0000.djvu
 +
    126  SHARED_ANNO    shared_anno.iff
 +
  9480  PAGE #2    p0001.djvu
 +
      …
 +
 +
I když je vylistování stránek vícestránkového DjVu dokumentu tímto způsobem velice rychlé, má dvě docela dost podstatné vady.
 +
 +
; Problém single-page DjVu dokumentů : V případě, že DjVu dokument neobsahuje vrstvu typu DJVM (což je případ většiny ''single-page'' DjVu dokumentů) skončí pokus o vylistování obsahu přes '''djvm''' chybou.
 +
; Problém s alternativními názvy stránek : U DjVu dokumentu může mít každá vložená stránka kromě svého názvu, který vždy končí příponou ''.djvu'' zároveň přiřazené i alternativní jméno, se kterým lze pracovat i v odkazech v rámci vícestránkových DjVu dokumentů. Bohužel ''djvm'' tyto alternativní jména vypsat neumí.
 +
 +
Proto je dobré vědět, že existují i jiné způsoby, jak získat seznam stránek obsažených v DjVu dokumentu.
 +
 +
Nejspolehlivější a zároveň dostatečně svižný je příkaz '''ls''', který má integrován [[djvused (DjVuLibre)#ls|djvused]].
 +
 +
user@stroj:~$ djvused svazek.djvu -e ls
 +
    1 P    22076  p0000.djvu T=Alternativní název strany číslo jedna
 +
      A      126  shared_anno.iff
 +
    2 P    9480  p0001.djvu
 +
      …
 +
 +
Pak se dá k podobnému účelu použít příkaz '''dump''', ovšem v tomto případě již musí být výstup zpracovaný utilitou '''grep''', aby odfiltroval pouze řádky s řetězcem <code>FORM:DJVU</code> což je ale obzvláště u dokumentů s vekým množstvím stránek neefektivní a zdlouhavá operace, jelikož '''grep''' musí se v průběhu zpracování postupně analyzovat všechny řádky výpisu.
 +
 +
user@stroj:~$ djvused svazek.djvu -e dump | grep FORM\:DJVU
 +
    FORM:DJVU [22076] {p0000.djvu} [P1] (Alternativní název strany číslo jedna)
 +
      …
 +
 +
Podobným způsobem by se dal zpracovat i výstup utility [[djvudump (DjVuLibre)|djvudump]]

Latest revision as of 17:06, 21 December 2017

Toto je nástroj, který umožňuje skládat DjVu stránky do vícestránkových DjVu svazků, vkládat do nich stránky nové a případně je i mazat.

Použití djvm[edit]

Za celou řadu let co pracuji s DjVu dokumenty jsem použil tuto utilitu prakticky pouze ke dvěma účelům:

  • K sestavování DjVu dokumentů do DjVu svazků
  • A k odstraňování stránek s DjVu svazků

K výpisu obsahu DjVu dokumentů totiž mnohem lépe poslouží djvused.

Sestavení DjVu svazku[edit]
djvm -c[reate] nový_djvu_svazek první_strana_v_djvu  x_tá_strana_v_djvu

Toto je nejjednodušší způsob sestavení několika DjVu souborů do jednoho svazku.

Přidání nové stránky do DjVu svazku[edit]
djvm -i[nsert] existující_djvu_svazek další_strana_v_djvu [ pozice_stránky ]

Toto je jediný způsob, jakým lze do již existujícího DjVu svazku korektně přidat na vybranou pozici novou stránku.

Není-li uvedeno číslo pozice, nebo pokud je uvedené číslo vyšší než aktuální počet stran v DjVu svazku, je stránka automaticky přiřazena na konec. V ostatních případech dojde k přečíslování pořadí stran následujících za příslušnou pozicí.

Poznámka Tímto způsobem lze do DjVu svazku vložit nejenom single-page ale také celý DjVu svazek najednou. V takovém případě však dojde k vytvoření samostatné metadatové vrstvy. Sloučení metadatových vrstev lze provést pouze manuálně
Vyjmutí stránky z DjVu svazku[edit]
djvm -d[elete] aktualizovaný_djvu_svazek pozice_stránky

Toto je jediný způsob, jakým lze z DjVu svazku korektně odstranit vybranou stránku.

Upozornění Při odstraňování stránek z DjVu svazku se pracuje pouze s pořadovým číslem stránky!!!
Vylistování stránek z DjVu svazku[edit]
djvm -l[ist] djvu_svazek

Výpis pak vypadá asi takto:

user@stroj:~$ djvm -l svazek.djvu
Size     Type        Name
--------------------------
 22076   PAGE #1     p0000.djvu
   126   SHARED_ANNO     shared_anno.iff
  9480   PAGE #2     p0001.djvu
     …

I když je vylistování stránek vícestránkového DjVu dokumentu tímto způsobem velice rychlé, má dvě docela dost podstatné vady.

Problém single-page DjVu dokumentů 
V případě, že DjVu dokument neobsahuje vrstvu typu DJVM (což je případ většiny single-page DjVu dokumentů) skončí pokus o vylistování obsahu přes djvm chybou.
Problém s alternativními názvy stránek 
U DjVu dokumentu může mít každá vložená stránka kromě svého názvu, který vždy končí příponou .djvu zároveň přiřazené i alternativní jméno, se kterým lze pracovat i v odkazech v rámci vícestránkových DjVu dokumentů. Bohužel djvm tyto alternativní jména vypsat neumí.

Proto je dobré vědět, že existují i jiné způsoby, jak získat seznam stránek obsažených v DjVu dokumentu.

Nejspolehlivější a zároveň dostatečně svižný je příkaz ls, který má integrován djvused.

user@stroj:~$ djvused svazek.djvu -e ls
   1 P    22076  p0000.djvu T=Alternativní název strany číslo jedna
     A      126  shared_anno.iff
   2 P     9480  p0001.djvu
     …

Pak se dá k podobnému účelu použít příkaz dump, ovšem v tomto případě již musí být výstup zpracovaný utilitou grep, aby odfiltroval pouze řádky s řetězcem FORM:DJVU což je ale obzvláště u dokumentů s vekým množstvím stránek neefektivní a zdlouhavá operace, jelikož grep musí se v průběhu zpracování postupně analyzovat všechny řádky výpisu.

user@stroj:~$ djvused svazek.djvu -e dump | grep FORM\:DJVU
    FORM:DJVU [22076] {p0000.djvu} [P1] (Alternativní název strany číslo jedna)
     …

Podobným způsobem by se dal zpracovat i výstup utility djvudump