djvuxmlparser (DjVuLibre)

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

Konzolový nástroj djvuxmlparser je určen pro import obsahu textové a metadatové vrstvy v DjVuXML formátu do DjVu dokumentu.

DTD (Definice typu dokumentu) DjVuXML, která obsahuje popis struktury XML tohoto typu dokumentu a vymezuje množinu přípustných elementů, je součástí distribuce DjVuLibre[1]. Jde o zjednodušenou definici HTML DTD, rozšířenou o několik specifických elementů:

OBJECT
V rámci jednoho DjVuXML dokumentu se může vyskytovat obsah celého DjVu svazku. Každá ze stránek pak má svůj vlastní element typu OBJECT, za kterým následuje element MAP s obsahem metadatové vrstvy příslušné stránky. Element OBJECT obsahuje základní atributy stránky:
  • její rozměry (atributy width a height)
  • cestu k dokumentu ze kterého byl obsah vyexportován (atribut data)
  • a jméno příslušné stránky (atribut usemap)
PARAM
Je element vyhrazeny pro hodnotu gammy a dpi. Obsahuje vždy dva atributy. Atribut name se jménem příslušného parametru a value s její hodnotou.
HIDDENTEXT
Obsahuje vlastní obsah skryté textové vrstvy v hierarchicky identické podobě, jako když s ním pracuje djvused. Zásadní rozdíl oproti .dsed formátu je v tom, že souřadnice obsahuje vždy hierarchicky nejnižší element, kterým je obvykle WORD.
PAGECOLUMNS
Se uplatní především v situaci, kdy je obsah stránky rozdělen do více sloupců
REGION
Je textová oblast, která může sdružovat několik souvisejících odstavců do logického celku
PARAGRAPH
Odstavec obvykle sdružuje několi řádků
LINE
Řádka, která obvykle sdružuje několik slov
WORD
Slovo
MAP
Element vyhrazený pro metadata. Bohužel jediným podporovaným typem je AREA.
AREA
Element, který je v rámci .dsed formátu součástí elementu maparea. Bohužel podporován je pouze typ rect
Upozornění Klíčovým nedostatkem utility djvuxmlparser je, že při importu obsahu XML souboru ve formátu DjVuXML je kompletně nahrazen nejenom stávající obsah textové vrstvy, ale i veškerých metadat stránky. Formát DjVuXML navíc nemá implementovanou podporu pro všechny typy metadatových elementů.

Použití

djvuxmlparser [ -o djvusoubor ] soubor_v_DjVuXML
PoznámkaPokud není uveden DjVu soubor do kterého se mají data naimportovat, pokusí se djvuxmlparser použít cestu uvedenou v atributu data, v rámci elementu OBJECT.

Problém při importu DjVuXML

Upozornění Ačkoliv utilita djvutoxml umožňuje vyexportovat samostatně text i metadata, při pokusu o import DjVuXML souboru bez elementu MAP nejspíš narazíte. Navíc, jak už bylo uvedeno, prázdný element MAP bude mít za následek ztrátu veškerých existujících metadat.

Jediným rozumným způsobem, jak ošálit tento nedostatek, je naimportování obsahu DjVuXML dokumentu do prázdného DjVu souboru

user@stroj:~$ cat soubor.xml
…
<OBJECT data="file://localhost/home/user/soubor.djvu" type="image/x.djvu" height="1000" width="1000" usemap="page05.djvu" >
<PARAM name="DPI" value="300" />
…
user@stroj:~$ djvumake temp.djvu INFO=1000,1000,300 soubor.xml
djvumake: djvu file contains neither Sxxx nor BGxx chunks
user@stroj:~$ djvuxmlparser -o temp.djvu soubor.xml
user@stroj:~$ djvudump temp.djvu 
 FORM:DJVU [82] 
   INFO [10]         DjVu 1000x1000, v24, 300 dpi, gamma=2.2
   TXTz [52]         Hidden text (text, etc.)
user@stroj:~$ djvused temp.djvu -e 'select 1 ; print-txt' > text.dsed
user@stroj:~$ djvused soubor.djvu -e 'select page05.djvu ; set-txt text.dsed' -s
PoznámkaPodobným způsobem provádí import DjVuXML nástroj djvutool
  1. Jako soubor /usr/share/djvu/pubtext/DjVuXML-s.dtd