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
Použití
djvuxmlparser [ -o djvusoubor ] soubor_v_DjVuXML
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
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
Podobným způsobem provádí import DjVuXML nástroj djvutool
- ↑ Jako soubor
/usr/share/djvu/pubtext/DjVuXML-s.dtd