[Plugin Request] Контентный плагин для DjVu

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

[Plugin Request] Контентный плагин для DjVu

Сообщение Ник »

Всем привет! С праздниками! :)

Никто не видел контентный плагин для DjVu - типа показ количества страниц, факта наличия текстового слоя и иной общей информации (если это в принципе возможно).

Или может кто напишет? :roll:

Спасибо :)
Xubuntu
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Может кто-то всё-таки возьмётся - есть утилита командной строки djvudump из опенсурс пакета DjVuLibre - но она парсит весь файл и показывает данные по каждой странице (цвет, разрешение сканирования, разрешение картинки, наличие текстового слоя и т.п.).

Может можно как-то на её базе сделать контентный плагин?
Xubuntu
sergiokapone
Сообщения: 99
Зарегистрирован: Ср ноя 18, 2009 17:53

Сообщение sergiokapone »

Запрос еще актуален
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Поддерживаю запрос, 64-битная приветствуется.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Mailk
Сообщения: 251
Зарегистрирован: Сб янв 16, 2010 20:19

Сообщение Mailk »

Нужен и актуален.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Посмотрел djvudump из DjVuLibre: таки вполне годно для WinScript Advanced. Для DC запилил на Lua:
[cut]- Pages (pages count, number, 0 if file is corrupted or other errors);
- Hidden text (text, etc., true/false);
- Page annotation (hyperlinks, etc., true/false);
можно тут глянуть.[/cut]
Пара моментов:
- если в файле всего одна страница, то подобной строки

Код: Выделить всё

DIRM [ЧИСЛО]       Document directory (bundled, ЧИСЛО files ЧИСЛО pages)
не будет, т.е. достаточно три первые строки выхлопа прочитать (только stderr не надо читать :));
- в найденных примерах страницы с текстовым слоем или аннотацией с линками имеют в описании соответственно что-то типа

Код: Выделить всё

TXTz [ЧИСЛО]       Hidden text (text, etc.)
ANTz [ЧИСЛО]       Page annotation (hyperlinks, etc.)
но в исходниках (DjVuDumpHelper.cpp) есть ещё и TXTa с ANTa соотв. (не понял, что и с чем едят, на всякий случай ищу все варианты).

На взгляд не программиста, запилить полноценный плагин не кажется проблемой, попытка "облегчить" djvudump, чтобы не искала и не писала в вывод ничего кроме перечисленного, тоже выглядит возможной.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

А я как-то смотрел DjVu_ActiveX_Control (Release, GetNumberOfPages, GetTypeInfo, GetTypeInfoCount), но так и не понял, как им файл цеплять.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher
У этой штуки документация что-то как-то не ахти, у меня сложилось впечатление, что оно только для встраивания DjVu в DOC/PPT.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
У меня тоже такая мысль была. Документация вообще ни о чём. Ориентироваться можно только по объектной модели.
Но даже, чтобы встроить в DOC, сперва нужно получить содержимое DJVU-файла. А значит, какая-то функция должна отвечать за передачу по физическому пути. .ImageURL = "file:///<путь>" ругается на кодировку.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher
Честно говоря, не пробовал, пробежался по документации и всё, мне кажется, djvudump выглядит перспективнее и как отдельная утилита, и как основа для бинарного плага (GNU GPL v2 вроде как и без внешних зависимостей). Только не понял, файл сразу читается целиком или по частям?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Тут опять спросили.
Медленный вариант для числа страниц следующий:

Кидаем djvused.exe, libdjvulibre.dll и libjpeg.dll (msvcp100.dll и msvcr100.dll, если нет в system32) из пакета в папку %COMMANDER_PATH%\Plugins\wdx\WinScriptsAdv\Scripts\.
Туда же кидаем DjVuPagesCount.vbs:

Код: Выделить всё

Content = CreateObject("WScript.Shell").Run("%ComSpec% /q /c for /f %# in ('""""%COMMANDER_PATH%\" &_
"Plugins\wdx\WinScriptsAdv\Scripts\djvused.exe"" -n -e n """ & FileName & """""') do exit /b %#", 0, 1)
Для размеров первой страницы — DjVuFirstPageSize.vbs:

Код: Выделить всё

With CreateObject("WScript.Shell")
  .CurrentDirectory = .ExpandEnvironmentStrings("%COMMANDER_PATH%\Plugins\wdx\WinScriptsAdv\Scripts")
  Size = .Run("%ComSpec% /q /c for /f ""tokens=2,4 delims== "" %a in ('djvused" &_
  ".exe """ & FileName & """ -e ""select 1;size""') do exit /b %a%b", 0, 1)
End With
H = Fix(Len(Size)/2) : Content = Left(Size, H) : Content1 = Mid(Size, H + 1)
В options.ini пишем:
[Script]
ActiveScripts=...
|DjVuPages|DjVuPageSize

[DjVuPages]
Script=DjVuPagesCount.vbs
content=Число страниц
extensions=djvu
FoldersPaths=0

[DjVuPageSize]
Script=DjVuFirstPageSize.vbs
content=Ширина
content1=Высота
extensions=djvu
FoldersPaths=0
Выполняем cm_UnloadPlugins или перезапускаем ТС. Пользуемся новыми колонками из WinScriptsAdv.
Последний раз редактировалось Flasher Сб янв 19, 2019 13:12, всего редактировалось 3 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить