djvuxmlparser (DjVuLibre)

From DCEwiki
Revision as of 23:12, 3 January 2018 by Keny (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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í[edit]

djvuxmlparser [ -o djvusoubor ] soubor_v_DjVuXML
Poznámka Pokud 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[edit]

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ámka Podobným způsobem provádí import DjVuXML nástroj djvutool
  1. Jako soubor /usr/share/djvu/pubtext/DjVuXML-s.dtd