Ru-Board.club
← Вернуться в раздел «Программы»

» WinDjView

Автор: ozioso
Дата сообщения: 30.07.2009 20:48
С Windows 7 x64 нет проблем?
Автор: Nicorn
Дата сообщения: 30.07.2009 21:59
у меня отлично работает
Автор: monday2000
Дата сообщения: 31.07.2009 10:52
AndyZ

Цитата:
Начните смотреть отсюда: 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-файле ограничено? Хотелось бы, конечно, неограниченное количество подобных аннотаций.
Автор: monday2000
Дата сообщения: 03.08.2009 10:41
AndyZ
Эта ли функция читает WinDjView-специфичные аннотации или нет?

Цитата:
GUTF8String Annotation::GetXML() const

Или это для чтения cтандартных DjVu-аннотаций?


Добавлено:
Или вот это оно:

Цитата:
GUTF8String DocSettings::GetXML(bool skip_view_settings) const
?
Автор: AndyZ
Дата сообщения: 04.08.2009 13:47
monday2000
Я Вам уже написал про функцию, которая загружает связанные с документом данные. Если Вы прочитаете её первые 12 строк, даже не углубляясь дальше, то сразу поймёте, что формат хранения - это сжатый xml. На мой взгляд, там всё прозрачно и понятно.
Автор: juvaforza
Дата сообщения: 04.08.2009 14:13
AndyZ
Прошу прощения, но вы наверное упустили из внимание это сообщение. Спасибо.
Автор: AndyZ
Дата сообщения: 04.08.2009 16:24
juvaforza
Могу добавить испанскую локализацию в CVS, хотя не знаю, смотрит ли туда кто-нибудь По поводу истории - действительно, логичнее будет сделать её раздельной для каждого документа. Это будет более похоже на реализацию истории в браузере, тем более что вкладки для документов уже сделаны.
Автор: monday2000
Дата сообщения: 04.08.2009 17:09
AndyZ

Цитата:
то сразу поймёте, что формат хранения - это сжатый 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).
Тут уже ничего не понятно.
Автор: AndyZ
Дата сообщения: 04.08.2009 17:32
monday2000
Гм, ну там просто подряд извлекаются атрибуты тэга и записываются в поля объекта.
Автор: monday2000
Дата сообщения: 05.08.2009 12:14
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-файле?
Автор: AndyZ
Дата сообщения: 05.08.2009 13:22
monday2000
Я Вам уже написал и про считывание, и про формат, а Вы мне почему-то не верите Повторяю ещё раз: вся функциональность собрана в методе CDjViewApp::LoadDocSettings. Считывание выполняет функция CDjViewApp::GetProfileCompressed, парсинг xml - функция XMLParser::Parse, а анализ распарсенного - DocSettings::Load.

Добавлено:

Цитата:
И сколько может быть максимально WinDjView-специфичных аннотаций в DjVu-файле?
Неограничено (то есть сколько поместится в память).

Цитата:
Что это за класс - "Annotation"
Это внутреннее общее представление всех аннотаций, и пользовательских, и встроенных.
Автор: ghosty
Дата сообщения: 05.08.2009 17:22
monday2000
AndyZ
Эти вопросы можно решить и в ПМ - запутываете только друг друга и всех остальных
Автор: monday2000
Дата сообщения: 06.08.2009 13:19
AndyZ

Цитата:
а анализ распарсенного - 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 - ограниченная величина?
Автор: AndyZ
Дата сообщения: 06.08.2009 14:02
monday2000
Цитата:
Я предполагаю, что...
Вы можете легко проверить свои предположения, прочитав код.

Цитата:
Имена этих узлов - некий тарабарский набор букв-цифр (MD5-сумма?)
Да.

Цитата:
а что тогда в HKEY_CURRENT_USER\Software\Andrew Zhezherun\WinDjView\Annotations?
Последние использованные настройки аннотаций (будут использованы при создании новой).

Цитата:
если длина ключа settings - ограниченная величина?
А почему Вы решили, что она ограничена? Это сжатый xml, как я уже написал выше.
Автор: monday2000
Дата сообщения: 06.08.2009 15:05
AndyZ

Цитата:
сжатый xml

В первый раз слышу такое понятие. Это бинарные данные (типа XML, заархивированный каким-нибудь архиватором)?

Добавлено:
Я надеялся, что смогу написать простейшую консольную утилиту, чтобы задаёшь ей имя DjVu-файла - а она чтобы выдёргивала из реестра и выдавала в виде текстовых данных простейшую информацию о его "пользовательских" аннотациях.

Но раз там какой-то хитроумный XML (просто XML мне знаком вполне), да и вообще - я, сколько Ваш код не пытаюсь сейчас читать - не могу понять в нём ровно ни хрена , то, пожалуй, на сей раз мне прийдётся оставить свои попытки...

Просить Вас сделать фичу экспорта данных о "пользовательских" аннотациях - вроде бы нецелесообразно (это мало кому нужно).

Остаётся сожалеть, что эти аннотации - не есть стандартные DjVu-аннотации. C ними я бы легко справился.
Автор: monday2000
Дата сообщения: 07.08.2009 16:26
Вместо WinDjView пришлось применить СканКромсатор:

http://www.djvu-soft.narod.ru/scan/sel_mask_color.htm

А жаль...
Автор: AndyZ
Дата сообщения: 07.08.2009 18:52
monday2000
В WinDjView начиная с версии 1.0 есть встроенная возможность экспорта аннотаций в файл: File->Export Bookmarks (пользовательские закладки и аннотации экспортируются вместе). На выходе получается тот же самый xml, только без компрессии.
Автор: monday2000
Дата сообщения: 08.08.2009 20:45
AndyZ
Вот это да! Гениально. А я тут голову морочаю... Это же именно то, что нужно. Большое спасибо за наводку!

Разумеется, это будет в сто раз удобней, чем использовать СканКромсатор для такой цели.

Не подскажете ли - как бы максимально попроще программно парсить простой XML в MS VC++ 6.0 ?

И ещё вопрос: а как бы потом оптом удалить из DjVu-файла всю эту понаставленную кучу "пользовательских" аннотаций? Нет ли в WinDjView такой фичи? Можно, конечно, залезть в реестр и просто удалить узел, соответствующий данному DjVu-файлу - но это как-то грубовато.
Автор: monday2000
Дата сообщения: 11.08.2009 08:51
Я придумал, как "подкрасить" фон страниц (для улучшения читабельности).

Можно просто расставить на каждой странице по 1 пользовательской аннотации - но размером "на всю страницу".

Это даже можно сделать пакетно - достаточно сформировать в сторонней программе XML-файл и импортировать его через "Импорт закладок..."

Кстати, "Импорт закладок..." и "Экспорт закладок..." - явно неудачные названия. Они не отражают тот факт, что там ещё и пользовательские аннотации.

Добавлено:
AndyZ
Странно - оказывается, координаты при этом могут быть отрицательными.
Автор: djdtyfhu
Дата сообщения: 12.08.2009 17:31
AndyZ

А можно ли включить в программу функцию добавления, редактирования оглавления (bookmarks в терминологии Adobe Acrobat) c подобной же идеологией работы:

1. При нахождении на определенной странице нажимаем Ctrl+B - вставляется пункт оглавления, причем на том же уровне вложенности, что и предыдущий.

2. Фокус ввода текста перемещается на пункт оглавления, и можно вводить свой текст.

3. После нажатия Enter оглавление сохраняется

4. При перемещении по оглавлению по нажатию на F2 можно редактировать пункты.
Автор: AndyZ
Дата сообщения: 14.08.2009 19:36
monday2000
Цитата:
как бы максимально попроще программно парсить простой XML в MS VC++ 6.0?
Если Вы не хотите использовать готовый код из WinDjView, то можете посмотреть, например, в сторону MSXML.

Цитата:
как бы потом оптом удалить из DjVu-файла всю эту понаставленную кучу "пользовательских" аннотаций?
Через интерфейс в настоящий момент - никак, только по одной. А если Вы удалите ключ в реестре, то заодно пропадут закладки и другие настройки. Хотя можно сделать так: экспортировать закладки в файл, отредактировать xml, удалив оттуда все аннотации, и затем проимпортировать полученный файл, сказав при этом "заменить всё".

Цитата:
оказывается, координаты при этом могут быть отрицательными.
Если Вы пользуетесь инструментом выделения области для создания аннотаций, то координаты должны получаться неотрицательными. Отрицательные координаты могут возникнуть, например, при выделении текста, когда во встроенном текстовом слое указан блок, выходящий за пределы страницы. Обрезание по пределам страницы происходит в момент отрисовки.

djdtyfhu
Планируется реализовать создание древовидной структуры пользовательских закладок, хотя я ещё не решил, какой именно будет интерфейс у этой функциональности. Для внедрения оглавления в djvu-файл есть утилита BookmarkTool, в которой планируется реализовать поддержку файла .bookmarks.
Автор: ber2004
Дата сообщения: 14.08.2009 21:44

Цитата:
1. При нахождении на определенной странице нажимаем Ctrl+B - вставляется пункт оглавления, причем на том же уровне вложенности, что и предыдущий.
2. Фокус ввода текста перемещается на пункт оглавления, и можно вводить свой текст.
3. После нажатия Enter оглавление сохраняется
4. При перемещении по оглавлению по нажатию на F2 можно редактировать пункты.

1.Выделяем пункт оглавления (тут бы исхитриться выделить так, чтобы не произошло перехода на соотв. страницу. Т.е. не просто мышкой ткнуть. Может для этого выделения иметь значок впереди каждого пункта (как у маркированных списков)? Нажать его - и пункт подсвечивается?)
2.Пролистываем до нужной страницы
3. на странице выделяем заголовак (пусть текстовый слой есть)
4. Правой мышкой - в контекстном меню два пункта (кроме прочих): "вставить перед..." и "вставить после...". Жмем один из них.
5.Вставленный пункт - с фокусом ввода и готов к редактированию (орфография и т.п. или своё что-то написать).
---
Если текстового слоя нет, то может как-то прикрутить функциональность ABBYY Screenshot Reader или аналогичной программы, чтобы в фоновом режиме распознавала выделение.
Автор: CBB
Дата сообщения: 14.08.2009 22:09
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.

Автор: antabu
Дата сообщения: 15.08.2009 14:36
Если текстовый слой в кодировке 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 не может, но в этом я могу ошибаться.
Автор: AndyZ
Дата сообщения: 15.08.2009 15:55
antabu
Насчёт текстового слоя - вполне возможно. Текстовый слой в соответствии со стандартом djvu должен быть в кодировке UTF-8.

Цитата:
Кроме того, старая версия 0.5 могла открывать недокачанные файлы, а 1.01 не может
Пришлите, пожалуйста, пример такого файла.
Автор: vitaly1
Дата сообщения: 15.08.2009 16:24
Текущая версия - уже 1.0.3: http://sourceforge.net/projects/windjview/files/

Правда, списка измений пока не нашел.
Автор: ab
Дата сообщения: 15.08.2009 16:28
vitaly1

Changes in version 1.0.3 (2009-08-15)

* Fixed a problem with exiting fullscreen mode introduced in 1.0.2.
Автор: monday2000
Дата сообщения: 15.08.2009 18:08
AndyZ

Цитата:
Если Вы не хотите использовать готовый код из WinDjView

Я бы взял - но мне это кажется не такой уж простой задачей. Я уже написал код разбора с TinyXML - хоть он и критикуем, но для такой простейшей цели достаточен.

Цитата:
Через интерфейс в настоящий момент - никак, только по одной.

ИМХО это было бы полезной фичей в WinDjView.

Цитата:
Если Вы пользуетесь инструментом выделения области для создания аннотаций, то координаты должны получаться неотрицательными.

Им и пользуюсь. Выделил всю страницу - и "top = -1", а "bottom" получился на единицу меньше, чем реальная высота страницы. Может, я как-то "неправильно" выделял - вот -1 и выскочил.
Автор: antabu
Дата сообщения: 15.08.2009 19:04

Цитата:
Пришлите, пожалуйста, пример такого файла.


Я ошибался. Разбитый на куски файл открывается первой версией.


Автор: egor23
Дата сообщения: 15.08.2009 20:31
WinDjView 1.0.3 archive-repack 699кБ
http://gettyfile.ru/362066/

md5
b2f9e9ac38ea7b3c7e60e063bdce69a7 *WinDjView_1.0.3.7z

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556

Предыдущая тема: Двухядерные AMD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.