С Windows 7 x64 нет проблем?
» WinDjView
у меня отлично работает
AndyZ
Цитата:
Ничего я там не смог понять.
Мне лишь интересует формат параметра settings. Пример:
Цитата:
Из всего этого settings мне нужно вытянуть лишь 5 параметров:
"номер страницы" (многостраничного DjVu-файла), "номер аннотации" (на странице DjVu-файла), "координаты аннотации" (относительно верхнего левого угла страницы), "длина и ширина аннотации", "цвет аннотации").
У Вас же где-то должен быть записан формат параметра settings? Код чтения-разбора мне проще самому написать.
Добавлено:
Правда, непонятно - ввиду ограниченности длины параметра settings количество таких аннотаций в DjVu-файле ограничено? Хотелось бы, конечно, неограниченное количество подобных аннотаций.
Цитата:
Начните смотреть отсюда: CDjViewApp::LoadDocSettings().
Ничего я там не смог понять.
Мне лишь интересует формат параметра settings. Пример:
Цитата:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Andrew Zhezherun\WinDjView\Documents\1135F7FF78B88852620E61152AEFE7E4]
"settings"=hex:ff,ff,1f,fa,ce,8c,a3,72,fe,94,6b,85,48,c3,09,8d,02,64,2d,ba,7e,\
0c,95,25,62,df,91,79,ff,2e,6f,39,c6,c1,4d,d4,29,92,42,f6,cb,38,c1,51,b8,32,\
d6,1f,ed,df,57,4a,91,0f,74,31,42,95,9c,67,4a,e5,6d,fa,30,93,18,26,fd,2c,b1,\
8a,d6,82,b5,5a,f9,47,b2,f2,2c,65,97,7e,e9,6b,27,93,8d,02,b3,82,8a,1a,ae,f6,\
42,17,48,bc,1b,da,a5,34,83,cd,2b,c1,2f,3b,94,66,8c,30,aa,7a,29,24,43,4e,e1,\
f2,0f,ae,52,bd,e7,a0,88,3a,88,bd,4f,ee,ad,77,e8,4b,83,03,66,07,91,a5,0e,c0,\
6a,8e,b9,53,28,ec,0b
"last-known-location"="С:\\1.djvu"
Из всего этого settings мне нужно вытянуть лишь 5 параметров:
"номер страницы" (многостраничного DjVu-файла), "номер аннотации" (на странице DjVu-файла), "координаты аннотации" (относительно верхнего левого угла страницы), "длина и ширина аннотации", "цвет аннотации").
У Вас же где-то должен быть записан формат параметра settings? Код чтения-разбора мне проще самому написать.
Добавлено:
Правда, непонятно - ввиду ограниченности длины параметра settings количество таких аннотаций в DjVu-файле ограничено? Хотелось бы, конечно, неограниченное количество подобных аннотаций.
AndyZ
Эта ли функция читает WinDjView-специфичные аннотации или нет?
Цитата:
Или это для чтения cтандартных DjVu-аннотаций?
Добавлено:
Или вот это оно:
Цитата:
Эта ли функция читает WinDjView-специфичные аннотации или нет?
Цитата:
GUTF8String Annotation::GetXML() const
Или это для чтения cтандартных DjVu-аннотаций?
Добавлено:
Или вот это оно:
Цитата:
GUTF8String DocSettings::GetXML(bool skip_view_settings) const?
monday2000
Я Вам уже написал про функцию, которая загружает связанные с документом данные. Если Вы прочитаете её первые 12 строк, даже не углубляясь дальше, то сразу поймёте, что формат хранения - это сжатый xml. На мой взгляд, там всё прозрачно и понятно.
Я Вам уже написал про функцию, которая загружает связанные с документом данные. Если Вы прочитаете её первые 12 строк, даже не углубляясь дальше, то сразу поймёте, что формат хранения - это сжатый xml. На мой взгляд, там всё прозрачно и понятно.
AndyZ
Прошу прощения, но вы наверное упустили из внимание это сообщение. Спасибо.
Прошу прощения, но вы наверное упустили из внимание это сообщение. Спасибо.
juvaforza
Могу добавить испанскую локализацию в CVS, хотя не знаю, смотрит ли туда кто-нибудь По поводу истории - действительно, логичнее будет сделать её раздельной для каждого документа. Это будет более похоже на реализацию истории в браузере, тем более что вкладки для документов уже сделаны.
Могу добавить испанскую локализацию в CVS, хотя не знаю, смотрит ли туда кто-нибудь По поводу истории - действительно, логичнее будет сделать её раздельной для каждого документа. Это будет более похоже на реализацию истории в браузере, тем более что вкладки для документов уже сделаны.
AndyZ
Цитата:
Я понял следующее:
Ветка реестра представляется как XML-узел и дальше из этого узла всё считывается.
В функции bool CDjViewApp::LoadDocSettings(const CString& strKey, DocSettings* pSettings) вроде бы нужная мне строка - pSettings->Load(*parser.GetRoot());
Смотрю дальше void DocSettings::Load(const XMLNode& node). Вроде бы нужное мне место - data.Load(child);
Смотрю дальше void PageSettings::Load(const XMLNode& node).
Вроде бы нужное мне место - annotation.Load(child);
Смотрю дальше void Annotation::Load(const XMLNode& node).
Тут уже ничего не понятно.
Цитата:
то сразу поймёте, что формат хранения - это сжатый xml
Я понял следующее:
Ветка реестра представляется как XML-узел и дальше из этого узла всё считывается.
В функции bool CDjViewApp::LoadDocSettings(const CString& strKey, DocSettings* pSettings) вроде бы нужная мне строка - pSettings->Load(*parser.GetRoot());
Смотрю дальше void DocSettings::Load(const XMLNode& node). Вроде бы нужное мне место - data.Load(child);
Смотрю дальше void PageSettings::Load(const XMLNode& node).
Вроде бы нужное мне место - annotation.Load(child);
Смотрю дальше void Annotation::Load(const XMLNode& node).
Тут уже ничего не понятно.
monday2000
Гм, ну там просто подряд извлекаются атрибуты тэга и записываются в поля объекта.
Гм, ну там просто подряд извлекаются атрибуты тэга и записываются в поля объекта.
AndyZ
Цитата:
"Там" - это в void Annotation::Load(const XMLNode& node)? По-моему, это больше похоже на стандартную DjVu-аннотацию. А мне же нужны исключительно WinDjView-специфичные аннотации (которые видны только в WinDjView). Что это за класс - "Annotation"? Это стандартные DjVu-аннотации или же WinDjView-специфичные аннотации?
Где же всё-таки осуществляется непосредственное считывание из реестра и парсинг по переменным ветки реестра http://forum.ru-board.com/topic.cgi?forum=5&topic=18322&start=1020#4 ?
А сам формат параметра settings у Вас нигде, что ли, не записан? Мне бы проще всего узнать этот формат и всё. И сколько может быть максимально WinDjView-специфичных аннотаций в DjVu-файле?
Цитата:
Гм, ну там просто подряд извлекаются атрибуты тэга и записываются в поля объекта.
"Там" - это в void Annotation::Load(const XMLNode& node)? По-моему, это больше похоже на стандартную DjVu-аннотацию. А мне же нужны исключительно WinDjView-специфичные аннотации (которые видны только в WinDjView). Что это за класс - "Annotation"? Это стандартные DjVu-аннотации или же WinDjView-специфичные аннотации?
Где же всё-таки осуществляется непосредственное считывание из реестра и парсинг по переменным ветки реестра http://forum.ru-board.com/topic.cgi?forum=5&topic=18322&start=1020#4 ?
А сам формат параметра settings у Вас нигде, что ли, не записан? Мне бы проще всего узнать этот формат и всё. И сколько может быть максимально WinDjView-специфичных аннотаций в DjVu-файле?
monday2000
Я Вам уже написал и про считывание, и про формат, а Вы мне почему-то не верите Повторяю ещё раз: вся функциональность собрана в методе CDjViewApp::LoadDocSettings. Считывание выполняет функция CDjViewApp::GetProfileCompressed, парсинг xml - функция XMLParser::Parse, а анализ распарсенного - DocSettings::Load.
Добавлено:
Цитата:
Цитата:
Я Вам уже написал и про считывание, и про формат, а Вы мне почему-то не верите Повторяю ещё раз: вся функциональность собрана в методе CDjViewApp::LoadDocSettings. Считывание выполняет функция CDjViewApp::GetProfileCompressed, парсинг xml - функция XMLParser::Parse, а анализ распарсенного - DocSettings::Load.
Добавлено:
Цитата:
И сколько может быть максимально WinDjView-специфичных аннотаций в DjVu-файле?Неограничено (то есть сколько поместится в память).
Цитата:
Что это за класс - "Annotation"Это внутреннее общее представление всех аннотаций, и пользовательских, и встроенных.
monday2000
AndyZ
Эти вопросы можно решить и в ПМ - запутываете только друг друга и всех остальных
AndyZ
Эти вопросы можно решить и в ПМ - запутываете только друг друга и всех остальных
AndyZ
Цитата:
По-видимому, мне нужно это. Но я затрудняюсь понять, как именно она это делает. Как я понимаю, в ветке реестра HKEY_CURRENT_USER\Software\Andrew Zhezherun\WinDjView\Documents хранятся узлы, каждый из которых соответствует одному DjVu-документу. Имена этих узлов - некий тарабарский набор букв-цифр (MD5-сумма?).
Каждый такой узел содержит 3 ключа:
-(по умолчанию)
-last-known-location
-settings
Я предполагаю, что вся информация о "пользовательских" (WinDjView-специфичных) аннотациях любого DjVu-документа хранится в этом ключе settings - не так ли? Правда, неясно - а что тогда в HKEY_CURRENT_USER\Software\Andrew Zhezherun\WinDjView\Annotations? И неясно, как может быть
Цитата:
Цитата:
а анализ распарсенного - DocSettings::Load.
По-видимому, мне нужно это. Но я затрудняюсь понять, как именно она это делает. Как я понимаю, в ветке реестра HKEY_CURRENT_USER\Software\Andrew Zhezherun\WinDjView\Documents хранятся узлы, каждый из которых соответствует одному DjVu-документу. Имена этих узлов - некий тарабарский набор букв-цифр (MD5-сумма?).
Каждый такой узел содержит 3 ключа:
-(по умолчанию)
-last-known-location
-settings
Я предполагаю, что вся информация о "пользовательских" (WinDjView-специфичных) аннотациях любого DjVu-документа хранится в этом ключе settings - не так ли? Правда, неясно - а что тогда в HKEY_CURRENT_USER\Software\Andrew Zhezherun\WinDjView\Annotations? И неясно, как может быть
Цитата:
Неограничено (то есть сколько поместится в память).- если длина ключа settings - ограниченная величина?
monday2000
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Я предполагаю, что...Вы можете легко проверить свои предположения, прочитав код.
Цитата:
Имена этих узлов - некий тарабарский набор букв-цифр (MD5-сумма?)Да.
Цитата:
а что тогда в HKEY_CURRENT_USER\Software\Andrew Zhezherun\WinDjView\Annotations?Последние использованные настройки аннотаций (будут использованы при создании новой).
Цитата:
если длина ключа settings - ограниченная величина?А почему Вы решили, что она ограничена? Это сжатый xml, как я уже написал выше.
AndyZ
Цитата:
В первый раз слышу такое понятие. Это бинарные данные (типа XML, заархивированный каким-нибудь архиватором)?
Добавлено:
Я надеялся, что смогу написать простейшую консольную утилиту, чтобы задаёшь ей имя DjVu-файла - а она чтобы выдёргивала из реестра и выдавала в виде текстовых данных простейшую информацию о его "пользовательских" аннотациях.
Но раз там какой-то хитроумный XML (просто XML мне знаком вполне), да и вообще - я, сколько Ваш код не пытаюсь сейчас читать - не могу понять в нём ровно ни хрена , то, пожалуй, на сей раз мне прийдётся оставить свои попытки...
Просить Вас сделать фичу экспорта данных о "пользовательских" аннотациях - вроде бы нецелесообразно (это мало кому нужно).
Остаётся сожалеть, что эти аннотации - не есть стандартные DjVu-аннотации. C ними я бы легко справился.
Цитата:
сжатый xml
В первый раз слышу такое понятие. Это бинарные данные (типа XML, заархивированный каким-нибудь архиватором)?
Добавлено:
Я надеялся, что смогу написать простейшую консольную утилиту, чтобы задаёшь ей имя DjVu-файла - а она чтобы выдёргивала из реестра и выдавала в виде текстовых данных простейшую информацию о его "пользовательских" аннотациях.
Но раз там какой-то хитроумный XML (просто XML мне знаком вполне), да и вообще - я, сколько Ваш код не пытаюсь сейчас читать - не могу понять в нём ровно ни хрена , то, пожалуй, на сей раз мне прийдётся оставить свои попытки...
Просить Вас сделать фичу экспорта данных о "пользовательских" аннотациях - вроде бы нецелесообразно (это мало кому нужно).
Остаётся сожалеть, что эти аннотации - не есть стандартные DjVu-аннотации. C ними я бы легко справился.
Вместо WinDjView пришлось применить СканКромсатор:
http://www.djvu-soft.narod.ru/scan/sel_mask_color.htm
А жаль...
http://www.djvu-soft.narod.ru/scan/sel_mask_color.htm
А жаль...
monday2000
В WinDjView начиная с версии 1.0 есть встроенная возможность экспорта аннотаций в файл: File->Export Bookmarks (пользовательские закладки и аннотации экспортируются вместе). На выходе получается тот же самый xml, только без компрессии.
В WinDjView начиная с версии 1.0 есть встроенная возможность экспорта аннотаций в файл: File->Export Bookmarks (пользовательские закладки и аннотации экспортируются вместе). На выходе получается тот же самый xml, только без компрессии.
AndyZ
Вот это да! Гениально. А я тут голову морочаю... Это же именно то, что нужно. Большое спасибо за наводку!
Разумеется, это будет в сто раз удобней, чем использовать СканКромсатор для такой цели.
Не подскажете ли - как бы максимально попроще программно парсить простой XML в MS VC++ 6.0 ?
И ещё вопрос: а как бы потом оптом удалить из DjVu-файла всю эту понаставленную кучу "пользовательских" аннотаций? Нет ли в WinDjView такой фичи? Можно, конечно, залезть в реестр и просто удалить узел, соответствующий данному DjVu-файлу - но это как-то грубовато.
Вот это да! Гениально. А я тут голову морочаю... Это же именно то, что нужно. Большое спасибо за наводку!
Разумеется, это будет в сто раз удобней, чем использовать СканКромсатор для такой цели.
Не подскажете ли - как бы максимально попроще программно парсить простой XML в MS VC++ 6.0 ?
И ещё вопрос: а как бы потом оптом удалить из DjVu-файла всю эту понаставленную кучу "пользовательских" аннотаций? Нет ли в WinDjView такой фичи? Можно, конечно, залезть в реестр и просто удалить узел, соответствующий данному DjVu-файлу - но это как-то грубовато.
Я придумал, как "подкрасить" фон страниц (для улучшения читабельности).
Можно просто расставить на каждой странице по 1 пользовательской аннотации - но размером "на всю страницу".
Это даже можно сделать пакетно - достаточно сформировать в сторонней программе XML-файл и импортировать его через "Импорт закладок..."
Кстати, "Импорт закладок..." и "Экспорт закладок..." - явно неудачные названия. Они не отражают тот факт, что там ещё и пользовательские аннотации.
Добавлено:
AndyZ
Странно - оказывается, координаты при этом могут быть отрицательными.
Можно просто расставить на каждой странице по 1 пользовательской аннотации - но размером "на всю страницу".
Это даже можно сделать пакетно - достаточно сформировать в сторонней программе XML-файл и импортировать его через "Импорт закладок..."
Кстати, "Импорт закладок..." и "Экспорт закладок..." - явно неудачные названия. Они не отражают тот факт, что там ещё и пользовательские аннотации.
Добавлено:
AndyZ
Странно - оказывается, координаты при этом могут быть отрицательными.
AndyZ
А можно ли включить в программу функцию добавления, редактирования оглавления (bookmarks в терминологии Adobe Acrobat) c подобной же идеологией работы:
1. При нахождении на определенной странице нажимаем Ctrl+B - вставляется пункт оглавления, причем на том же уровне вложенности, что и предыдущий.
2. Фокус ввода текста перемещается на пункт оглавления, и можно вводить свой текст.
3. После нажатия Enter оглавление сохраняется
4. При перемещении по оглавлению по нажатию на F2 можно редактировать пункты.
А можно ли включить в программу функцию добавления, редактирования оглавления (bookmarks в терминологии Adobe Acrobat) c подобной же идеологией работы:
1. При нахождении на определенной странице нажимаем Ctrl+B - вставляется пункт оглавления, причем на том же уровне вложенности, что и предыдущий.
2. Фокус ввода текста перемещается на пункт оглавления, и можно вводить свой текст.
3. После нажатия Enter оглавление сохраняется
4. При перемещении по оглавлению по нажатию на F2 можно редактировать пункты.
monday2000
Цитата:
Цитата:
Цитата:
djdtyfhu
Планируется реализовать создание древовидной структуры пользовательских закладок, хотя я ещё не решил, какой именно будет интерфейс у этой функциональности. Для внедрения оглавления в djvu-файл есть утилита BookmarkTool, в которой планируется реализовать поддержку файла .bookmarks.
Цитата:
как бы максимально попроще программно парсить простой XML в MS VC++ 6.0?Если Вы не хотите использовать готовый код из WinDjView, то можете посмотреть, например, в сторону MSXML.
Цитата:
как бы потом оптом удалить из DjVu-файла всю эту понаставленную кучу "пользовательских" аннотаций?Через интерфейс в настоящий момент - никак, только по одной. А если Вы удалите ключ в реестре, то заодно пропадут закладки и другие настройки. Хотя можно сделать так: экспортировать закладки в файл, отредактировать xml, удалив оттуда все аннотации, и затем проимпортировать полученный файл, сказав при этом "заменить всё".
Цитата:
оказывается, координаты при этом могут быть отрицательными.Если Вы пользуетесь инструментом выделения области для создания аннотаций, то координаты должны получаться неотрицательными. Отрицательные координаты могут возникнуть, например, при выделении текста, когда во встроенном текстовом слое указан блок, выходящий за пределы страницы. Обрезание по пределам страницы происходит в момент отрисовки.
djdtyfhu
Планируется реализовать создание древовидной структуры пользовательских закладок, хотя я ещё не решил, какой именно будет интерфейс у этой функциональности. Для внедрения оглавления в djvu-файл есть утилита BookmarkTool, в которой планируется реализовать поддержку файла .bookmarks.
Цитата:
1. При нахождении на определенной странице нажимаем Ctrl+B - вставляется пункт оглавления, причем на том же уровне вложенности, что и предыдущий.
2. Фокус ввода текста перемещается на пункт оглавления, и можно вводить свой текст.
3. После нажатия Enter оглавление сохраняется
4. При перемещении по оглавлению по нажатию на F2 можно редактировать пункты.
1.Выделяем пункт оглавления (тут бы исхитриться выделить так, чтобы не произошло перехода на соотв. страницу. Т.е. не просто мышкой ткнуть. Может для этого выделения иметь значок впереди каждого пункта (как у маркированных списков)? Нажать его - и пункт подсвечивается?)
2.Пролистываем до нужной страницы
3. на странице выделяем заголовак (пусть текстовый слой есть)
4. Правой мышкой - в контекстном меню два пункта (кроме прочих): "вставить перед..." и "вставить после...". Жмем один из них.
5.Вставленный пункт - с фокусом ввода и готов к редактированию (орфография и т.п. или своё что-то написать).
---
Если текстового слоя нет, то может как-то прикрутить функциональность ABBYY Screenshot Reader или аналогичной программы, чтобы в фоновом режиме распознавала выделение.
WinDjView 1.0.2 archive-repack
Только два exe для NT и 9x и dll для русификации
http://rapidshare.com/files/267400707/WinDjView_1.02.rar
Changes in version 1.0.2 (2009-08-14)
+ Export multiple pages at once via multiple selection in the thumbnails view.
+ Support for additional image formats: PNG, GIF, TIF, JPG (Windows XP or later required, or GDI+ on older versions).
+ Each document now has its own history (back/forward buttons).
* Several bug fixes.
Только два exe для NT и 9x и dll для русификации
http://rapidshare.com/files/267400707/WinDjView_1.02.rar
Changes in version 1.0.2 (2009-08-14)
+ Export multiple pages at once via multiple selection in the thumbnails view.
+ Support for additional image formats: PNG, GIF, TIF, JPG (Windows XP or later required, or GDI+ on older versions).
+ Each document now has its own history (back/forward buttons).
* Several bug fixes.
Если текстовый слой в кодировке ANSI (Windows), работают все текстовые операции, кроме поиска (не находит слово). Пример:
ftp://happy.kiev.ua/pub/texts/dop/HIZH8101.RAR (после распаковки) и
http://lib.rus.ec/b.usr/zhurnal_Himiya_i_Zhizn_zhurnal_Himiya_i_Zhizn_1981-01.djvu
Эти два файла различаются только кодировкой текстового слоя - первый в ANSI, второй - в UTF8. Почему-то первый больше по размеру.
Кроме того, старая версия 0.5 могла открывать недокачанные файлы, а 1.01 не может, но в этом я могу ошибаться.
ftp://happy.kiev.ua/pub/texts/dop/HIZH8101.RAR (после распаковки) и
http://lib.rus.ec/b.usr/zhurnal_Himiya_i_Zhizn_zhurnal_Himiya_i_Zhizn_1981-01.djvu
Эти два файла различаются только кодировкой текстового слоя - первый в ANSI, второй - в UTF8. Почему-то первый больше по размеру.
Кроме того, старая версия 0.5 могла открывать недокачанные файлы, а 1.01 не может, но в этом я могу ошибаться.
antabu
Насчёт текстового слоя - вполне возможно. Текстовый слой в соответствии со стандартом djvu должен быть в кодировке UTF-8.
Цитата:
Насчёт текстового слоя - вполне возможно. Текстовый слой в соответствии со стандартом djvu должен быть в кодировке UTF-8.
Цитата:
Кроме того, старая версия 0.5 могла открывать недокачанные файлы, а 1.01 не можетПришлите, пожалуйста, пример такого файла.
Текущая версия - уже 1.0.3: http://sourceforge.net/projects/windjview/files/
Правда, списка измений пока не нашел.
Правда, списка измений пока не нашел.
vitaly1
Changes in version 1.0.3 (2009-08-15)
* Fixed a problem with exiting fullscreen mode introduced in 1.0.2.
Changes in version 1.0.3 (2009-08-15)
* Fixed a problem with exiting fullscreen mode introduced in 1.0.2.
AndyZ
Цитата:
Я бы взял - но мне это кажется не такой уж простой задачей. Я уже написал код разбора с TinyXML - хоть он и критикуем, но для такой простейшей цели достаточен.
Цитата:
ИМХО это было бы полезной фичей в WinDjView.
Цитата:
Им и пользуюсь. Выделил всю страницу - и "top = -1", а "bottom" получился на единицу меньше, чем реальная высота страницы. Может, я как-то "неправильно" выделял - вот -1 и выскочил.
Цитата:
Если Вы не хотите использовать готовый код из WinDjView
Я бы взял - но мне это кажется не такой уж простой задачей. Я уже написал код разбора с TinyXML - хоть он и критикуем, но для такой простейшей цели достаточен.
Цитата:
Через интерфейс в настоящий момент - никак, только по одной.
ИМХО это было бы полезной фичей в WinDjView.
Цитата:
Если Вы пользуетесь инструментом выделения области для создания аннотаций, то координаты должны получаться неотрицательными.
Им и пользуюсь. Выделил всю страницу - и "top = -1", а "bottom" получился на единицу меньше, чем реальная высота страницы. Может, я как-то "неправильно" выделял - вот -1 и выскочил.
Цитата:
Пришлите, пожалуйста, пример такого файла.
Я ошибался. Разбитый на куски файл открывается первой версией.
WinDjView 1.0.3 archive-repack 699кБ
http://gettyfile.ru/362066/
md5
b2f9e9ac38ea7b3c7e60e063bdce69a7 *WinDjView_1.0.3.7z
http://gettyfile.ru/362066/
md5
b2f9e9ac38ea7b3c7e60e063bdce69a7 *WinDjView_1.0.3.7z
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
Предыдущая тема: Двухядерные AMD
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.