Я сделал консольную утилиту, выполняющую ту же работу, что и DjVu Hyperlinks Editor. Назвал её "contentm".
Скачать утилиту:
contentmhttp://www.djvu-soft.narod.ru/soft/contentm.rar (118 КБ) (Исходники внутри)
Эта утилита принимает на входе DjVuXML-файл, созданный из ОДНОЙ DjVu-страницы с книжным оглавлением, и автоматически создаёт в копии этого DjVuXML-файла гиперссылочное оглавление. Поддерживается также сдвиг нумерации, и опциональный разделяющий символ (между номером страницы и его бессмысленным числовым префиксом).
Причины создания этой утилиты:
1. Попалась мне книга, где номер страницы имеет вид "1-1" - где первая единица - номер тома, и только вторая - номер страницы. DjVu Hyperlinks Editor не справился с таким оглавлением. Автор DjVu Hyperlinks Editor не ответил на просьбу о помощи. Вот и пришлось сделать свою аналогичную утилиту.
2. Побочный эффект: моя утилита написана на чистом С++ STL с использованием кроссплатформенной XML-библиотеки pugixml, и может скомилироваться на любой платформе.
3. Открытые исходники.
4. В дальнейшем можно будет прикрутить к утилите визуальный интерфейс.
Использование:
Вот как выглядел бы bat-файл, использующую эту утилиту:
djvutoxml --page 5 --without-anno file.djvu input.xml
contentm input.xml output.xml -s - -p 1
djvuxmlparser -o file.djvu output.xml
pause
У нас есть DjVu-файл "file.djvu". На его 5-ой странице начинается книжное оглавление. Вытаскиваем OCR-слой с 5-ой страницы в файл input.xml (гиперссылки не извлекаем).
При помощи contentm добавляем в input.xml гиперссылки со сдвигом нумерации на 1 страницу и с разделяющим символом "-". Получаем output.xml.
Вставляем output.xml обратно в исходный DjVu-файл "file.djvu". Получаем на его 5-ой странице готовое гиперссылочное оглавление.
Ту же самую процедуру необходимо проделать для ВСЕХ страниц DjVu-файла, содержащих гиперссылочное оглавление.
DjVu Hyperlinks Editor полезная программа, но немного глючная, и не очень удобная. С английской локализацией там не всё гладко (автор сказал, что совсем не знает английский язык). Да и исходники зачем-то закрыты.