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

» PDF & DjVu Bookmarker

Автор: Melirius
Дата сообщения: 06.12.2009 03:15
Спасибо. На wiki документация сейчас абсолютно не соответствует версии.
Автор: StanFreeWare
Дата сообщения: 06.12.2009 05:19
0.8rc4
http://www.onlinedisk.ru/file/285991/
убрал текстовое окно с папкой картинок. путь к картинкам - в тултипе кнопки выбора папки
добавил кнопку развернуть только верхние узлы дерева
поправил ошибки

Melirius
Вот выпущу 0.8final, тогда и до вики руки дойдут.
Автор: StanFreeWare
Дата сообщения: 06.12.2009 12:00
0.8final выложил на SourceForge.

Огромное спасибо NME за бета-тестинг.

Поправил исходники TreeViewAdv - теперь редактирования по клику нет, только по F2.
Дабл-клик под редактирование тоже заводить не буду - пусть сворачивает-разворачивает ветви.
Автор: Melirius
Дата сообщения: 06.12.2009 15:32
Может, в рамках концепции "всё в одном" прикрутить всё-таки текстовое поле с возможностью редактирования для первоначальной вставки оглавления из буфера обмена? И пусть строки без числа в конце и только из числа (скорее всего номера страниц оглавления) будут выделены красным. А то забыл одно число в длинном оглавлении - и лезешь опять в текстовый редактор по номеру строки.
Автор: StanFreeWare
Дата сообщения: 06.12.2009 18:35
Melirius

Цитата:
в рамках концепции "всё в одном"

Ну пробуйте:
0.8.5rc1
http://www.onlinedisk.ru/file/286525/

по клику на ошибочной строке в списке отчета (не по описанию ошибки, а ниже) - переход на саму строку с ошибкой в верхнем текстовом окне.

NME
поправил глюк с завершением редактирования элемента оглавления по движению мыши.
Автор: NME
Дата сообщения: 06.12.2009 20:00
StanFreeWare
ага, я видел.. вроде глюков больше не наблюдается, можно дальше развивать программу))
Автор: denver 22
Дата сообщения: 06.12.2009 21:22
StanFreeWare
Думаю, программа однозначно будет востребованной. Поэтому:
- зафиксируйте пожалуйста шапку у топика, чтобы ссылки были всегда на виду.
- если Qt окажется подвластной Вам, это будет более красивым (перспективность проекта Qt) и простым (с точки зрения установки) решением.
Желаю Вам удачи в развитии!
Автор: StanFreeWare
Дата сообщения: 06.12.2009 22:17
denver 22
Спасибо за положительный отзыв.


Цитата:
зафиксируйте пожалуйста шапку

Да я уже обоим модераторам своим написал про это. Пока молчок...

Кстати, обновил (а по сути переписал) вики-документацию. Причем уже под 0.8.5 )
Автор: Melirius
Дата сообщения: 07.12.2009 04:24
Хорошо, и хорошо весьма!!!

Добавьте, пожалуйста, в документацию, что номера страниц, соответствующие tif-ам, определяются путём сортировки (т. е. имена самих файлов могут быть любыми).

По поводу внедрения закладок с помощью djvutools я выложу свой обработчик (Excel-евский макрос, полученный дедукцией и методом научного тыка из исходника Ging ), может быть, поможет. Русские буквы он вставляет нормально.

Добавлено:
Так, вот он:

[more]
Sub bookmarks_djvused()

'Written 28 November 2008 by Melirius
'I love Ru-board

fileSaveName = ActiveWorkbook.Path & "\bookmarks.txt"

If fileSaveName = False Then GoTo out

Open fileSaveName For Output As #1

Range("a1", Range("a1").End(xlDown)).Select
n_of_rows = Selection.Rows.Count

Print #1, "(bookmarks"; Chr(10)

Dim Buffer() As Byte

For i = 1 To n_of_rows
ActiveSheet.Rows(i).Select
bmk_level = Selection.Cells(1, 1).Value
bmk_title = Selection.Cells(1, 2).Value
temp = ""

' Convert string to the unusual required form
For j = 1 To Len(bmk_title)
Buffer = Mid(bmk_title, j, 1)
If (Buffer(0) = 167) And (Buffer(1) = 0) Then
temp = temp & "\302\247"
Else
If (Buffer(0) = 20) And (Buffer(1) = 32) Then
temp = temp & "-"
Else
If (Buffer(0) = 34) And (Buffer(1) = 0) Then
temp = temp & "\" & Chr(34)
Else
If (Buffer(0) = 92) And (Buffer(1) = 0) Then
temp = temp & "\\"
Else
If (Buffer(1) = 0) Then
temp = temp & Chr(Buffer(0))
Else
tmp = DecToOct(Buffer(0))
aga = Int((tmp + 200) / 300)
temp = temp & "\" & DecToOct(Buffer(1)) + 316 + aga & "\" & tmp + 200 - (100 * aga)
End If
End If
End If
End If
End If

Next j

bmk_page = Selection.Cells(1, 3).Value

ActiveSheet.Rows(i + 1).Select
next_bmk_level = Selection.Cells(1, 1).Value
If next_bmk_level > bmk_level Then
Print #1, "("; Chr(34); temp; Chr(34); Chr(10); Chr(34); "# "; bmk_page & Chr(34); Chr(10)
End If

If next_bmk_level = bmk_level Then
Print #1, "("; Chr(34); temp; Chr(34); Chr(10); Chr(34); "# "; bmk_page & Chr(34); " )"; Chr(10)
End If

If next_bmk_level < bmk_level Then
tmp_str = ""
For t = 1 To (bmk_level - next_bmk_level)
tmp_str = tmp_str + " )"
Next t
Print #1, "("; Chr(34); temp; Chr(34); Chr(10); Chr(34); "# "; bmk_page & Chr(34); " )"; tmp_str; Chr(10)
End If

Next i
Print #1, ")"; Chr(10)

Close #1
out:

End Sub
[/more]

Смысл исходника такой: есть таблица Excel из 3 столбцов, в первом - уровень заголовка, во втором - название, в третьем - страница. Макрос печатает файл bookmarks.txt, который вставляется в djvu командой

djvused.exe -e "set-outline bookmarks.txt" "имя_файла.djvu" -s

Некоторые символы, в частности, русские буквы, приходится переправлять в какие-то восьмеричные коды. Это делает часть макроса от строки ' Convert string to the unusual required form и далее.

И не спрашивайте, как я получил выражение для последнего else, которое и обрабатывает русские буквы - не расскажу, ибо не помню .
Автор: StanFreeWare
Дата сообщения: 07.12.2009 06:59
Melirius
О как. Я был уверен, что Excel решения делают только html для bookmark tool.
Надеюсь класс фреймворка для работы с Utf8 позволит избежать выражений, подобных вашему ))


Очередной кандидат в релизы:
http://www.onlinedisk.ru/file/286911/

При выборе строки в отчете об ошибках теперь можно промахиваться на +- 1 строку.
Добавлена пара кнопок - склеить со строкой сверху и склеить со строкой снизу.
Их функционал продублирован для Ctrl + вверх(вниз).
Автор: NME
Дата сообщения: 07.12.2009 18:41
StanFreeWare

Цитата:
Добавлена пара кнопок - склеить со строкой сверху и склеить со строкой снизу.

логичным продолжением будет третья кнопка, склеивающая строку без номера с последующей))
а если при этом объединенные строки будут еще и выделены другим цветом - станет ваще зашибись))
Автор: StanFreeWare
Дата сообщения: 07.12.2009 22:42
0.8.5rc3
http://www.onlinedisk.ru/file/287569/

Добавлена третья кнопка для текстового режима - поиск первой строки с ошибкой.
Ее функционал продублирован клавишей F7

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

При навигации по дереву с помощью клавиатуры теперь можно инициализировать отображение картинки по Enter.

Поправил некоторые баги, в очередной раз выловленные NME.

Практически доделал импорт формируемого djvused lisp-оглавления из djvu-файла.
Но застопорился на программном запуске djvused c аргументами командной строки.
System.Diagnostics.Process и я никак не подружимся..

Если есть спецы в .NET, сделайте примерчик, чтобы djvu-файл выбирался OpenFile-диалогом, и так подсовывался файлу djvused.exe, лежащему в одной папке с exeшником, чтобы получилось выполнение команды
djvused book.djvu -e 'print-outline' > myfile.dsed
(команда рабочая, проверял сам)

Тогда и остальные фичи - экспорт в djvu, рабоче-крестьянский просмотр картинок прямым извлечением из djvu - станут вопросом нескольких дней.
Автор: StanFreeWare
Дата сообщения: 08.12.2009 06:41
0.8.5rc4
http://www.onlinedisk.ru/file/287744/

В текстовом режиме добавлены еще две кнопки - переход на предыдущуюи следующую ошибку = Alt + Up/Down.

Удаление Tab-ов и двойных пробелов производится до вставки в текстовое окно.

Если в буфере обмена была одна строка, то текстовое окно не появляется.
Автор: monday2000
Дата сообщения: 08.12.2009 10:59
StanFreeWare

Цитата:
Если есть спецы в .NET

Нет ли у Вас возможности вообще отказаться от использования .NET? Вот я, к примеру, использую MS VC++ 6.0 (на котором и WinDjView написан) - и никакого .NET не нужно... Зачем нужен именно .NET в таких, в общем-то, простых проектах?

Это же лишний "костыль" (как выражается Tulon).
Автор: StanFreeWare
Дата сообщения: 08.12.2009 11:28
monday2000
Пока нет возможности.

.NET часто использую по работе, поэтому более-менее знаю. Данный проект - еще и способ поддерживать некоторый базовый уровень программирования под него.
Вообще больше всего моего кода было написано на delphi.
С++ изучал, но что-то достаточно сложное на нем написать не решусь.
QT не знаю вообще - услышал о нем только заинтересовавшись Scan Tailor.

В данный момент именно .NET позволяет наращивать функционал хорошими темпами. Иначе много времени лично у меня ушло бы на изобретание велосипедов - придумывания кода, который уже есть в .NET.

Да и чем вас так уж сильно не устраивает .NET? Я же не стал связываться с 3.5 и его LINQ )) А .NET 2.0 в Windows - штука уже практически обязательная. Redistributable Packages ставить ручками не нужно будут (кстати, с такой необходимостью я встречался всего раза 2 в своей практике), когда руки дойдут сделать установочный подпроект (я так думаю, когда доведу до 1.0, если не раньше).

Добавлено:
monday2000
Документация теперь устраивает?
Автор: monday2000
Дата сообщения: 08.12.2009 15:34
StanFreeWare

Цитата:
Вообще больше всего моего кода было написано на delphi.

Неплохой вариант. В конце концов СканКромсатор написан на Delphi.

Цитата:
Да и чем вас так уж сильно не устраивает .NET?

Это лишнее неудобство, ничем не оправданное в данном случае. Представьте, к примеру, что тот же СК требовал бы .NET - у всех это вызывало бы сильнейшее раздражение.

Цитата:
Документация теперь устраивает?

Теперь уже вроде бы лучше. Подробно вчитаюсь позже.
Автор: Nick222
Дата сообщения: 08.12.2009 15:38
StanFreeWare

Цитата:
Да и чем вас так уж сильно не устраивает .NET?

Заведомо осложнён переход в будущем на Линукс...
Автор: monday2000
Дата сообщения: 08.12.2009 15:52
StanFreeWare

Цитата:
Да и чем вас так уж сильно не устраивает .NET?

Открою Вам небольшой секрет: покуда Ваша программа будет на базе .NET - народ будет её молча игнорировать в своей массе. А Вы всё будете удивляться про себя: "и чего это такой чудесной распрекрасной программой что-то мало кто пользуется?".

Поймите - всем просто лень лишний раз шевельнуть пальцем - хотите Вы того или нет. Я вот давно понял эту простую заповедь. Мне даже страшно представить, что было бы, если бы тот же DjVu Small требовал .NET для своей работы.
Автор: NME
Дата сообщения: 08.12.2009 18:30
не согласен с предыдущими высказывании вот в чем - для начала нужно сделать программу в том, в чем автору быстрее и удобнее.. в ней определить и отработать все функции и возможности.. а лишь потом при желании и необходимости сделать программу на другом языке..
monday2000
ты, конечно... (можно на ты?) ...личность в деле книгосканирования небезызвестная, и твоими проектами мне приходилось пользоваться.. но, честно сказать, сыроваты.. нет удобства пользования, не хватает некоторых нужных фич.. а здесь у человека видно стремление сделать программу удобной для пользователя, предусмотреть максимум из того, что окажется нужным для работы с минимумом ручного труда.. так не надо сейчас рубить это стремление и устраивать холивар на тему языков программирования..

Цитата:
всем просто лень лишний раз шевельнуть пальцем

тем, кому это надо, не лень и сейчас вставлять букмарки по существующей методике , а уж установка фрэймворка (тем более что второй у на большинстве компьютеров установлен имхо) вообще не должна являться помехой..
удобнее ли для конечного пользователя, если программа будет написана на другом языке? - для некоторых - конечно да..
нужно ли переписывать программу сейчас? - конечно нет!
Автор: StanFreeWare
Дата сообщения: 08.12.2009 20:48
0.8.5rc5
http://www.onlinedisk.ru/file/288305/

Поправлены некоторые ошибки - ошибка rc4 и ошибка multiselect.
Немного поправил поведение для вставки однострочного буфера обмена.

Насчет сворачивания дочерних веток при сдвиге - это сильно мешает?
Придется запоминать состояния всех веток, потом их восстанавливать - это можно, но так ли необходимо?
Автор: NME
Дата сообщения: 08.12.2009 21:35
StanFreeWare

Цитата:
это сильно мешает?

это можно будет узнать потом, когда будет некоторый практический опыт по работе с реальными книгами.. а пока, наверное, на это можно забить))
Автор: bearjrgm
Дата сообщения: 08.12.2009 22:45
StanFreeWare
спасибо за Ваши труды, программа получается достаточно удобной, в отличие от своих предшественников, конечно если появится импорт-экспорт djvu вообще будет супер.
Автор: StanFreeWare
Дата сообщения: 09.12.2009 06:54
0.9.0rc1
http://www.onlinedisk.ru/file/288623/

Добавлена возможность импорта bookmark-оглавлений непосредственно из djvu-файлов
Пользы от нее не слишком много, наверное. Разве что поправить оглавление с ошибками.

Зато я наконец победил Prosess )

0.8.5rc5 выложил на SF в качестве 0.8.5 final

Что-то тутошние модераторы какие-то неактивные. Может кто-нибудь еще потрясет их насчет постоянной шапки темы?
Автор: denver 22
Дата сообщения: 09.12.2009 11:07
Впервые запустил программу:
1. При нажатии "Только навигация" затенить стрелки вверх/вниз. Иначе сейчас они меняют значение цифры, которая вводит в заблуждение.
2. При нажатии "Только навигация" всё равно показывать номер страницы у текущей строки и оставить активным её предпросмотр. Но если фича такой заморозки была изначально принята - спорить не буду.
3. Так и не понял смысл "По шаблону" (((. Прошу в Вики-руководстве представить пример оформления.
4. В руководстве где-то в начале предлагаю сделать краткое описание требований к исходным данным: "текст раздела + номер страницы". И способы из получения. Честно скажу, я какое-то время тормозил над этим... И банальный пример не помешал бы.

- Горячие клавиши в т.ч. для щелчков мыши, и также возможность выбирать по несколько строк - просто обалденны! Правда вместо Alt меня подмывало нажимать Ctrl? но это вопрос привычки
- интерактивная система предпросмотра - великолепно! Настолько удобно! Не надо будет постоянно переключаться из программы для проверки правильности ссылки.

Очень жду работу непосредственно с djvu.
Ещё раз спасибо за программу!
Автор: StanFreeWare
Дата сообщения: 09.12.2009 11:18
denver 22


Цитата:
При нажатии "Только навигация" затенить стрелки вверх/вниз. Иначе сейчас они меняют значение цифры, которая вводит в заблуждение.


В режиме Только навигация стрелочки должны работать - они должны выбирать страницу для предпосмотра. Весь смысл работы в этом режиме - выбрать нужную страницу книги справа и глядя на нее править структуру оглавления. Другой вопрос, что без выбранной папки с картинками эту опцию вообще не нужно давать включать. Но в случае работы непосредственно с djvu это уже не будет иметь значения ).

По шаблону - если в книге есть, например Глава 1, Глава 2, а между ними подпункты 1.1, 1.1.1, и т.д, то шаблон

Глава; #.

автоматически сделает структуру оглавления.
Но, если в книге будет еще и Приложение 1, Приложение 2 - вставит их внутрь последнего нумерованного подпункта. В этом случае поможет шаблон

Глава, Приложение; #.

Рад, что понравилось. Мы тут на пару с NME очень стараемся ))
Автор: denver 22
Дата сообщения: 09.12.2009 13:16
Ага, понял фишку с Навигацией!
С шаблонами стал пробовать. Кое что понял... Нюансы потыкаю. Если что, буду на примерах спрашивать. ИМХО, всё равно в Руководство (пусть даже отдельной страничкой) простые примеры нужно вставить. И рядом показывать какие результаты при этом получатся. А то ваш шаблон больше для программистов %)

Вопрос: отдельной функции сохранения проекта не будет? Всё через экспорт/импорт html-файла выполнять? Всё таки привычно, сохранять промежуточные результаты труда через Ctrl+S...

Хотелось бы окна "По шаблону" и "О программе" закрывать и по Esc (привычка).

P.S. В заголовке программы почему-то вместо 0.9.0rc1 написано 0.8.5rc4.
Автор: StanFreeWare
Дата сообщения: 09.12.2009 13:53
Сделал 4х минутный ролик - аргумент в споре с GMAP на форуме инфанаты.
http://www.onlinedisk.ru/file/288806/

Заодно нашел глюк, связанный с заданием номера страницы с текстового поля.
Пока не исправил, лучше навигацию и сдвиг делать стрелочками..
Автор: denver 22
Дата сообщения: 09.12.2009 13:58
Так и не разобрался я с автооглавлением. Хочу добиться понимания. Вот образец:

Код: 1. Предисловие .. . .. 3
1.1. Устройство водозаборных скважин 3
1.1.1. Требования к конструкции скважин . .4
Автор: StanFreeWare
Дата сообщения: 09.12.2009 14:05
denver 22

Не понял вашего примера.

по идее для первого случая должна работать строка
#.
для второго -
Глава; #.

Если нет - значит глюк.
Автор: denver 22
Дата сообщения: 09.12.2009 14:33
Мы похоже на разных языках говорим )))
Что означает символ #? Любое содержимое? Точка в конце строки будет распознаваться как шум распознавания.
StanFreeWare
Если смотреть на мой первый пример, как мне его отредактировать, чтобы программа автоматом создала 3-хуровненое дерево?
Или я вообще не с той стороны рассуждаю? Может надо сам шаблон как-то править? Если да, то как?
Возможно автоматом сделать результат типа http://img.flashtux.org/img132914920880x2dabad30.jpg ???

Добавлено:
Или всё ещё намного проще и программа автоматом создает ТОЛЬКО 2-й уровень содержания? А 3-й и более - вручную?

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Нужна бесплатная альтернатива Acronic


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