Страница 1 из 1

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

Добавлено: Вт янв 08, 2008 11:27
Ник
Всем привет! С праздниками! :)

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

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

Спасибо :)

Добавлено: Вс июл 13, 2008 12:36
Ник
Может кто-то всё-таки возьмётся - есть утилита командной строки djvudump из опенсурс пакета DjVuLibre - но она парсит весь файл и показывает данные по каждой странице (цвет, разрешение сканирования, разрешение картинки, наличие текстового слоя и т.п.).

Может можно как-то на её базе сделать контентный плагин?

Добавлено: Пт окт 28, 2011 21:19
sergiokapone
Запрос еще актуален

Добавлено: Сб окт 29, 2011 08:31
ask-rus
Поддерживаю запрос, 64-битная приветствуется.

Добавлено: Вт ноя 28, 2017 00:38
Mailk
Нужен и актуален.

Добавлено: Ср ноя 29, 2017 14:05
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, чтобы не искала и не писала в вывод ничего кроме перечисленного, тоже выглядит возможной.

Добавлено: Ср ноя 29, 2017 16:18
Flasher
А я как-то смотрел DjVu_ActiveX_Control (Release, GetNumberOfPages, GetTypeInfo, GetTypeInfoCount), но так и не понял, как им файл цеплять.

Добавлено: Сб дек 02, 2017 15:17
Skif_off
Flasher
У этой штуки документация что-то как-то не ахти, у меня сложилось впечатление, что оно только для встраивания DjVu в DOC/PPT.

Добавлено: Сб дек 02, 2017 17:39
Flasher
Skif_off
У меня тоже такая мысль была. Документация вообще ни о чём. Ориентироваться можно только по объектной модели.
Но даже, чтобы встроить в DOC, сперва нужно получить содержимое DJVU-файла. А значит, какая-то функция должна отвечать за передачу по физическому пути. .ImageURL = "file:///<путь>" ругается на кодировку.

Добавлено: Сб дек 02, 2017 18:22
Skif_off
Flasher
Честно говоря, не пробовал, пробежался по документации и всё, мне кажется, djvudump выглядит перспективнее и как отдельная утилита, и как основа для бинарного плага (GNU GPL v2 вроде как и без внешних зависимостей). Только не понял, файл сразу читается целиком или по частям?

Добавлено: Чт янв 17, 2019 12:48
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.