NME

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору привет всем любителям формата djvu, а также забредшим сюда случайно.. если кто не знает - я разработчик форка программы для просмотра djvu-файлов WinDjView - WinDjView Extended, а также сделанного на её основе редактора djvu-файлов - DjVuNMEditor'а.. ну и еще нескольких утилит преимущественно для редактирования djvu-файлов.. DjVuNMEditor может редактировать текстовый слой, аннотации (прямоугольные), заголовки страниц, на днях доделал модуль редактирования метаданных.. из "крупного", не относящегося к графике (маска, бэкграунд), по большому счету остался только модуль редактирования закладок (bookmarks, outline).. программы для создания/редактирования закладок есть в наличии, к некоторым даже визивиг прикручен.. но меня уже много лет напрягает отсутствие "универсальной" возможности точного позиционирования при переходе по ссылкам в djvu-файлах, как в pdf.. именно "универсальной", т.к. в принципе решение от Леона Боту есть - использование CGI-аргументов (page и showposition) в ссылках.. и мой WinDjView Extended поддерживает такие ссылки, но беда в том, что кроме моего форка и DjView Леона Боту такие ссылки никакие вьюверы не поддерживают, по крайней мере я не слышал про таких.. А хотелось бы, чтобы все просмотрщики переходили по ссылке - не обязательно все с позиционированием (пусть это делают некоторые вьюверы), но хотя бы на нужную страницу, а не показывали ошибку или стояли на месте.. ввиду того, что развитие формата остановилось почти 3 десятка лет назад, рассчитывать на владельцев формата давно уже не приходится.. потуги Боту по модернизации формата обычно на его вьювере и заканчиваются, мало кто внедряет у себя, ориентируясь на стандартную спецификацию (исключение разве что WinDjView Extended).. отсюда возникает вопрос - можно ли придумать что-то универсальное, что позволяло бы одновременно поддерживать в некоторых вьюверах позиционирование, а во всех остальных действовать стандартно - переходить на нужную страницу? плохо то, что в формате закладки есть только 2 поля - собственно отображаемая надпись (title, description) и URL, который в большинстве случаев является номером страницы, на которую осуществляется переход.. я рассматривал несколько вариантов решения данной проблемы.. 1) сделать 2 оглавления с закладками - одно стандартное в чанке NAVM, а второе с позиционированием, которое бы отображалось вместо стандартного в поддерживающих данную фишку вьюверах.. спрятать второе оглавление можно куда угодно - в отдельный новый чанк, в чанк с аннотациями, либо еще что-то придумать.. но мне не нравится сама идея двух оглавлений - если кто-то изменит одно, то будет рассинхрон(( 2) добавить в конец оглавления ветку с цифрами позиционирования.. тоже не гуд - жестко привязать эти цифры к пунктам оглавления не получится, и опять же при изменении (например, удалении какого-то пункта) будет не правильное позиционирование.. 3) добавить в надпись цифры позиционирования на странице, например Оглавление {0;20} Введение {30;25} Раздел 1 {10;80} В своём вьювере эти цифры можно будет скрыть, но в остальных они будут отображаться.. некрасиво.. 4) добавить в надпись непечатаемые символы, подменяя ими числа.. если подменять не арабские, а римские цифры, например, то нужно будет не 10, а только 5 символов для записи от 0 до 99.. но, проблема в том, что некоторые такие символы в одних вьюверах не отображаются, а в других видны в виде прямоугольников или других фигур(( мало таких, которые прям везде не отображаются, их меньше 5.. да и размер строки растёт - если отображение закладки предусматривает переход на новую строку, то могут возникнуть лишние пустые строки.. 5) сегодня возникла идея - а что если добавить некоторые символы к URL, являющемуся номером страницы? и "о, чудо!" почти свершилось)) добавляя к номеру пробел, таб, перевод строки (\n) - пять имеющихся у меня вьюверов отработали штатно - перешли на нужную страницу)) подвёл только один - DjView из пакета djvulibre(( только он не переходил по таким ссылкам.. теоретически можно поговорить с Боту, чтоб вставил что-то типа Trim() при обработке строки с URL, и тогда решение, которое позволяет переходить по ссылкам с позиционированием и корректно работать в не поддерживающих эту фичу просмотрщиках, можно сказать найдено)) только согласится ли он? вопрос.. в любом случае эту идею до реализации скорее всего доведу.. цифры позиционирования на странице будут записываться например двоичным кодом (пробел = 0, таб = 1).. размер файла немного возрастет, но не настолько критично, тем более в наш век, когда терабайтные флэшки меньше тыщщи р. стоят)) сначала во вьювере поддержку сделаю, а потом уже можно будет придумывать, как в эдиторе сделать удобным создание оглавлений, в т.ч. с позиционированием.. потому что без позиционирования нет желания возиться с этими закладками - инструментов по ним и так хватает.. к чему это я так много букв написал? хочу спросить, мож у кого появятся идеи как лучше и универсальнее реализовать данную фичу (закладки с позиционированием), желательно чтобы данное решение и на аннотации распространялось.. но с аннотациями проще - там есть поля, которые под это дело задействовать можно, например comment или target (он не совсем в тему, но по назначению практически не используется).. а вот закладки - это проблемка..
|