набросал питоновские скрипты и заархивировал портабельную сборку питона v3.8 для винды на такую тему: как поправить гиперссылки в дежавю при изменении числа или порядка страниц.
По просьбе TelecomUral написал утилиту, для сдвига номеров страниц в гиперссылках. При добавлении, например, обложек в начало djvu гиперссылки начинают указавать на страницы со смещением. Эта утилита позволяет это поправить.
https://www.upload.ee/files/15017552/Hyper_editor_python-3.8.10-embed-win32.7z.h...Внимание: Нужна предварительно установленная Djvulibre.
Использование:
1. Архив распаковать, поместить в папку со скриптом hyper_editor.py ваш djvu файл.
2.аВариант запуска из командной строки:
Перейти в папку со скриптом.
Набрать в консоли, что-то подобное: python.exe hyper_editor.py -f my.djvu -p 1 -s 4
-f имя вашего djvu файла (если файл не в той-же папке, то с путем)
-p начиная с какой страницы увеличивать гиперссылки.
-s величина сдвига нумерации страниц в гиперссылках, может быть отрицательным, если страницы удалялись.
2.бВариант для тех кто не дружит с командной строкой:
Открыть папку со скриптом в проводнике
Схватить мышью ваш djvu файл, переместить его на файл hyper_editor.cmd и отпустить. (Drag-and-drop)
Запустится консоль, в которой запросится номер стартовой страницы и сдвиг.
Результат будет в той же папке, где и исходный djvu, с суфиксом _new в имени.
Все должно работать на Win7 32/64 и выше. На Linux достаточно запустить hyper_editot.py с параметрами, сам архив с Python не нужен.
---
https://www.upload.ee/files/15031391/python-3.8.10-embed-win32.7z.htmlдобавил еще две утилиты для работы с гиперссылками в djvu
hyper_protector - утилита для замены ссылок в формате #номер_страницы на #id_страницы
После такой замены возможно добавление, перемещение, удаление страниц в djvu файле, гиперссылки будут работать правильно.
hyper_unprotector - утилита обратной замены: заменяет ссылки в формате #id_страницы на #номер_страницы. Также утилита удаляет ссылки, на удаленные страницы, если они появились после редактирования.
Использование:
1. Архив распаковать, поместить в папку со скриптами ваш djvu файл.
2.аВариант запуска из командной строки:
Перейти в папку со скриптом.
Набрать в консоли, что-то подобное: python.exe hyper_protector.py -f my.djvu
-f имя вашего djvu файла (если файл не в той-же папке, то с путем)
2.бВариант для тех кто не дружит с командной строкой:
Открыть папку со скриптом в проводнике
Схватить мышью ваш djvu файл, переместить его на файл hyper_protector.cmd и отпустить. (Drag-and-drop)
Результат будет в той же папке, где и исходный djvu, с суфиксом _new в имени.
После редактирования djvu можно при желании, таким же образом запустить hyper_unprotector
Внимание: Нужна предварительно установленная Djvulibre.
---
Andrea
Вот смотрите: У вас есть djvu файл с гиперссылками (оглавление, указатель). Все хорошо, ссылки указывают куда надо. Но вы захотели добавить на первую страницу пропущенную обложку, сделали это и теперь гиперссылки стали указывать неправильно. Появился сдвиг на 1 страницу.
Запускаете python.exe hyper_editor.py -f my.djvu -p 1 -s 1 и утилита вносит коррекцию в гиперссылки и они становятся правильными.
Другой пример: Появилась необходимость вставить, например, пропущенную страницу между 9 и 10-ой. Тогда ссылки на страницы 1-9 останутся правильными, а после 10-ой будет смещение на одну страницу. На этот случай надо запустить python.exe hyper_editor.py -f my.djvu -p 10 -s 1
Цитата:
А если страницы удалялись, например, страницы с рекламой?
Это значит смещение надо ставить отрицательным. python.exe hyper_editor.py -f my.djvu -p 233 -s -1 Т.е., поправить гиперссылки после 223 страницы, если удалилась одна 223-я страница с рекламой.
Цитата:
Нельзя ли сделать графический интерфейс к утилите?
Не имеет смысла, это же не полноценная программа, а утилита всего с тремя параметрами. Не умеете пользоваться командной строкой: просто перетащите и бросьте djvu файл на hyper_editor.cmd, введите запрос на стартовую страницу и смещение и все. Проще уже некуда.
hyper_protector и hyper_unprotector они работают по другому: Вы, перед всеми манипуляциями со страницами, запускаете hyper_protector, затем производите любые манипуляции,даже можете перемешивать случайно страницы, гиперссылки будут правильные. После этого запускаете hyper_unprotector (это даже не обязательно, но желательно) и все. Ничего вообще не надо вводить, перетащили и бросили djvu файл на cmd-скрипт.
Лично мне нравится вариант (un)protector. Но для пришедших "извне" файлов с повреждениями адресации хорош editor.
напоминаю, что имена "исходных" файлов, которыми пользуется protector (в доке на джву они названы id компонентов и их видно в информации о документе вьювера) можно поправить в djvutoy, в том числе даже в локальной кодировке ПК. По стандарту предполагается UTF-8.