Я сделал консольную утилиту для облегчения создания DjVu-букмарков. Назвал её "bookm".
Скачать утилиту:
bookmhttp://www.djvu-soft.narod.ru/soft/bookm.rar (70 КБ) (Исходники внутри)
Эта утилита принимает на входе табулированный текстовый файл, т.е. такой, где в начале каждой строки стоят один или несколько Tab-символов, обозначающие иерархию вложенности строк будущего оглавления.
В конце каждой строки должна стоять цифра, обозначающая номер строки, куда будет ссылаться этот пункт будущего оглавления. Вот пример такого файла:
Line1 1
Line2 2
Line3 3
Line4 4
Line5 5
Line6 6
Line7 7
Line8 8
Line9 9
Утилита bookm преобразует такой файл в формат букмарков, непосредственно понятный djvused. Т.е. можно вручную подготовить файл букмарков, и при помощи bookm создать букмарки в DjVu. Мне понравилось использовать для ручного создания табулированного файла текстовый редактор Notepad++ - потому что там можно оптом (выделив мышью) сдвигать несколько строк текста табом.
Теперь о том, зачем я это сделал (т.е. утилиту bookm):
Как известно, таких программ имеется уже несколько, которые умеют создавать DjVu-букмарки из ничего, причём многие такие программы - визуальные. Зачем же я тогда сделал ещё одну, да ещё консольную?
Причин тому несколько:
1. Мне не нравится привязка большинства похожих программ к .NET. Моя утилита написана просто на чистом С++ STL, и может скомилироваться на любой платформе.
2. Бывают изредка столь заковыристые оглавления, что ни одна из существующих программ не предусматривает работу с ними. Например, мне попалась книга, где номер страницы имеет вид "1-1" - где первая единица - номер тома, и только вторая - номер страницы. В этом случае проще поправить исходник и перекомпилировать утилиту заново, чем страдать от невозможности простой вставки букмарков.
3. Не все аналогичные утилиты имеют открытые исходники.
4. В дальнейшем можно будет прикрутить к bookm визуальный интерфейс.
Раньше я пользовался для вставки DjVu-букмарков китайской утилитой PdgCntEditor. Но в последний раз она что-то не поняла кодировки моего файла. Пришлось делать свою утилиту.
bookm ещё предусматривает опцию прибавления некоего заданного числа ко всем номерам страниц (считываемых из табулированного файла). Это удобно для DjVu-книг, имеющих обложку - там идёт сдвиг нумерации всего оглавления на 1.