Командная строка и DjVuLibre

Обсуждение любых программ, не имеющих отношения к Total Commander.

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

Ответить
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Командная строка и DjVuLibre

Сообщение hawk777 »

Привет всем форумчанам. Т.к. я впервые начал пользоваться командной строкой, то возник такой вопрос. Стало необходимо получить превьюшки всех djvu файлов в одной папке. Для данной задачи нашел и скачал DjVuLibre в котором имеется утилита djvuextract.exe разбивающая djvu файл (по крайней мере должна). запускаю из командной строки с различными параметрами, но толку ноль.

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

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\Администратор>djvuextract
Extracts components of a DjVu file

Usage:
   djvuextract <djvufile> [-page=<num>] {...<chunkid>=<file>...}

C:\Documents and Settings\Администратор>djvuextract c:\1.djvu
Extracts components of a DjVu file

Usage:
   djvuextract <djvufile> [-page=<num>] {...<chunkid>=<file>...}

C:\Documents and Settings\Администратор>djvuextract <c:\1.djvu> [-page=10]
Extracts components of a DjVu file

Usage:
   djvuextract <djvufile> [-page=<num>] {...<chunkid>=<file>...}

C:\Documents and Settings\Администратор>djvuextract <c:\1.djvu> [-page=10]
Все время ругается на djvuextract <djvufile> [-page=<num>] {...<chunkid>=<file>...}. теперь вопрос, нужны ли все эти фигурные, квадратные скобки или они необходимы только чтобы выделить парамеры?
ЗЫ. Понимаю что вопрос нубский но прошу помощи, сам не справляюсь.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Угловые скобки не нужны вообще - они просто обозначают параметр с именем (то есть, что вместо <djvufile> нужно подставить имя файла, вместо <num> - номер страницы, вместо <chunkid> - идентификатор блока и т.п.). Квадратные обозначают, что параметр опциональный, и тоже не нужны. Если в квадратных или фигурных скобках перечислено несколько параметров, разделенных символом |, это означает, что нужен один из указанных параметров.

Советую поискать примеры использования этой (и других) утилит проекта DjVuLibre, ими довольно сложно пользоваться, руководствуясь только документацией. Кстати, возможно, проще в данном случае будет использовать djvused.
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

Пишу djvused -e -set-thumbnails c:\1.djvu и получаю ошибку

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

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\Администратор>djvused -e -set-thumbnails c:\1.djvu
*** unrecognized command
*** (..\..\..\tools\djvused.cpp:346)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А ты примеры использования команды "set-thumbnails" хоть смотрел? Ты ее вообще неправильно вызываешь.
djvused myfile.djvu -e 'set-thumbnails 64' -s
Такая команда по идее должна сгенерировать превьюшки для всехс страниц файла myfile.djvu (при этом она их внедряет внутрь djvu-файла).
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

MVV
Все таки мне кажется что djvused не справится с поставленной задачей (получить первую страницу djvu файла в jpg). Из-за этого наверно надо копать в сторону djvuextract. Пример у них описан на сайте:
djvuextract [-page=pagenum] djvufile [chkid=filename]
Мне не понятен только что это за блок [chkid=filename] и за что он отвечает. И что еще интересно если вбить в команд строку djvuextract то пример там отличается от того что на сайте
C:\Documents and Settings\Администратор>djvuextract
Extracts components of a DjVu file
Usage:
djvuextract <djvufile> [-page=<num>] {...<chunkid>=<file>...}
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

И что еще интересно если вбить в команд строку djvuextract то пример там отличается от того что на сайте Цитата:
На сайте вообще нет примера использования, только синтаксис. Но так как на сайте можно использовать форматирование, там обошлись без угловых скобок. Остальное идентично - за исключением порядка следования параметров - значит, для djvuextract параметры можно задавать как до, так и после имени djvu-файла.

Посмотрел я, похоже, djvuextract тоже не сможет извлечь в стандартный графический формат - судя по всему, она может только извлекать бинарные данные блоков (изображение страницы содержит блок с именем Sjbz - вообще, названия блоков можешь посмотреть в WinDjView, если откроешь инфо страницы):

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

djvuextract.exe mydjvu.djvu Sjbz=f:\1.sjbz
Извлекать в картинку судя по всему может только ddjvu, основные форматы - pbm, pgm, ppm, pnm, tif (bmp не поддерживается). Команда для извлечения страницы (задашь маленький размер, получишь превьюшку):

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

ddjvu -format=tif -page=1 -size=128x128 mydjvu.djvu f:\mydjvu_001.tif
В общем, либо выполняешь команду для каждой страницы (для всех сразу нельзя), либо разбиваешь документ на страницы и потом выполняешь эту же команду для каждого файла с одной страницей.

Есть еще вариант - поковырять исходники и написать утилиту, делающую все сразу. :lol: Но по своему опыту знаю, что ковырять эти исходники придется долго и нудно.
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

MVV
Вот спасибо, выручили :) Мне и нужно извлекать только первую страницу только для множества файлов. Задействую скриптик на php и все будет как нужно :D
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А не проще батник?

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

@echo off
if -%1==- for %%f in (*.djvu) do call %0 %%f
if not -%1==- "X:\Путь\ddjvu.exe" -format=tif -page=1 -size=128x128 %1 "%~dpn1_thumb.tif" 
(в текущей папке для всех .djvu создает превьюшки с тем же именем и припиской "_thumb" - просто создаешь кнопку на панели инструментов ТК с пустым полем рабочей папки, и она будет работать для папки в активной панели)
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

Уже сделал на php, но решил проверить ваш вариант.
Изображение
К сожалению не работает
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

2hawk777
Кнопки удобно выкладывать через буфер. Наводим крысу на кнопку (button), жмем правую кнопку крысы и Copy. Потом в форме для ответа на форуме выполняем вставку из буфера. Получится текст, начинающийся с

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

TOTALCMD#BAR#DATA
Тогда любой может обратным способом поместить эту кнопку себе на панель и изучить ее. Скриншот в подобных случаях излишен.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

hawk777
Скорее всего, проблема в не пустом пути запуска
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

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

TOTALCMD#BAR#DATA
"C:\Program Files\Total Commander\Utils\WHS\djvu.bat"

C:\Program Files\Total Commander\Totalcmd.exe,3
djvu
C:\Program Files\Total Commander\Utils\WHS\

-1
Tol!k
очищал путь запуска, не помогает
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

У меня все прекрасно работало.
Путь запуска обязательно должен быть пустым, а не как в твоей кнопке. Иначе файл будет запущен из совсем другой директории, в которой будет пытаться найти *.djvu - из прописанной в кнопке.

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\WHS\djvu.bat

%COMMANDER_PATH%\Totalcmd.exe,3
Создать эскизы для djvu


-1
Путь к ddjvu.exe в бат-файле прописал верно?
hawk777
Сообщения: 61
Зарегистрирован: Сб дек 27, 2008 13:16

Сообщение hawk777 »

MVV
Да, конечно. Но мне в принципе уже не нужно, на пхп сделал. А за помощь спасибо :)
Ответить