Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] BAT Создание PDF файлов из группы файлов (JPG) (http://forum.oszone.net/showthread.php?t=279224)

raquelle 14-03-2014 10:04 2323411

BAT Создание PDF файлов из группы файлов (JPG)
 
Доброго времен суток! Помоги пожалуйста решить такую задачу. Имеется множество папок 1, 2, 3 ... N, в каждой папке содержится по три файла JPG, из них необходимо сделать многостраничный PDF и присвоить имя файлу как у папки, в которой лежат изначальные файлы. И сохранить файл PDF также в папке с изначальными файлами. Заранее спасибо!

Iska 14-03-2014 10:12 2323418

Цитата:

Цитата raquelle
Имеется множество папок 1, 2, 3 ... N »

Перечень их имён известен или как?

Цитата:

Цитата raquelle
в каждой папке содержится по три файла JPG, »

Что делать, если не лежат или не три?

Цитата:

Цитата raquelle
многостраничный »

Это уж как выйдет.

raquelle 14-03-2014 10:40 2323438

Цитата:

Цитата Iska
Перечень их имён известен или как? »

имена у папок 1,2,3 и тд.

Цитата:

Цитата Iska
Что делать, если не лежат или не три? »

в каждой папке всегда по три файла, но если их нет..то ничего не делать.

Цитата:

Цитата Iska
Цитата raquelle:
многостраничный »
Это уж как выйдет. »

обязательная необходимость из трех файлов JPG сделать один файл PDF.

Iska 14-03-2014 10:46 2323442

Цитата:

Цитата raquelle
и тд. »

Чем заканчивается «и тд.» известно или нет?

raquelle 14-03-2014 11:01 2323451

Цитата:

Цитата Iska
Чем заканчивается «и тд.» известно или нет? »

Нет, не известно..может быть как и 50 папок так и 500 папок.

Iska 24-03-2014 00:47 2327681

raquelle, примерно так:
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if not defined sSourceFolder (
        echo Usage: %~0 ^<Source folder^>
        exit /b 1
)

if not exist "%sSourceFolder%" (
        echo Source folder [%sSourceFolder%] not found.
        exit /b 2
)

for /l %%i in (1, 1, 1000) do if exist "%sSourceFolder%\%%i\*.jpg" (
        echo [%sSourceFolder%\%%i]
        "%ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe" "%sSourceFolder%\%%i\*.jpg" -format pdf "%sSourceFolder%\%%i\%%i.pdf"
)

endlocal
exit /b 0


Потребуется загрузить и установить ImageMagick. Исходную папку указывайте параметром пакетного файла (можно просто перетащить в Проводнике папку на пакетный файл или на ярлык на пакетный файл).

raquelle 24-03-2014 10:03 2327806

Iska, никакого результата не получилось. Может делаю что то неверно.
-установила ImageMagick
-в файл блокнота запихала код и изменила строку ""%ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe" " на "%ProgramFiles%\ImageMagick-6.8.0-Q16\convert.exe"
-запустила из папки, где находятся необходимые папки.
и результата нет.

Iska 24-03-2014 14:42 2327904

Цитата:

Цитата raquelle
-запустила из папки, где находятся необходимые папки.
и результата нет. »

И не должно быть. Просто перетащите папку в Проводнике на пакетный файл или его ярлык.

raquelle 31-03-2014 08:43 2330799

Iska, Спасибо, все работает)

se_arts 26-05-2017 14:58 2739845

Добрый день. На данной странице нашел нужный ответ на мой вопрос. Но никак не могу добиться результата. Помогите разобраться, что я неправильно делаю?
Записал код в бат-файл (код указан в 6-м посте).
Заменил строку %ProgramFiles%\ImageMagick-6.3.4-Q8\convert.exe. В итоге: "d:\Work\Prog\ImageMagick\convert.exe" "%sSourceFolder%\%%i\*.jpg" -format pdf "%sSourceFolder%\%%i\%%i.pdf
Структура: в папке 1 лежит бат-файл 1.bat и папка 2 с вложенными в нее *.jpg.
Перетягиваю (в проводнике) папку 2 на 1.bat и не получаю результат.
Что я неправильно делаю (сделал)?

Iska 31-05-2017 11:14 2741012

se_arts, опишите Вашу задачу.

se_arts 06-06-2017 11:13 2742413

Добрый день, Iska.
Моя задача: Есть рандомное количество папок (могут быть вложения, уровень вложений рандомный), внутри которых находится рандомное количество изображений (JPG или TIF). Необходимо в пределех каждой папки сделать свой PDF, название PDF = названию папки.
Задача и решение очень похожи на задачу и ее решение для raquelle.
Использую Ваш код:
Скрытый текст
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if not defined sSourceFolder (
echo Usage: %~0 ^<Source folder^>
exit /b 1
)

if not exist "%sSourceFolder%" (
echo Source folder [%sSourceFolder%] not found.
exit /b 2
)

for /l %%i in (1, 1, 1000) do if exist "%sSourceFolder%\%%i\*.jpg" (
echo [%sSourceFolder%\%%i]
"d:\Work\Prog\ImageMagick\convert.exe" "%sSourceFolder%\%%i\*.jpg" -format pdf "%sSourceFolder%\%%i\%%i.pdf"

)
endlocal
exit /b 0

Результат не получается. Окно CMD открывается и сразу закрывается. Внутри что-то написано, но не успеваю прочитать.

При использовании только такой строки (через "запуск программ") все срабатывает, PDF-файл создается:
Скрытый текст
d:\Work\Prog\ImageMagick\convert.exe convert -quality 80 d:\In-Out\BAT_CMD_Test\Test17_PDF_convert\2\001\*.jpg d:\In-Out\BAT_CMD_Test\Test17_PDF_convert\2\001\001.pdf

Пытался использовать данную строку в Вашем коде - результат не получил.

Подскажите, что я не правильно делаю?

Iska 12-06-2017 06:32 2743836

Цитата:

Цитата se_arts
Задача и решение очень похожи на задачу и ее решение для raquelle. »

Совсем не похоже. Ни задача, ни, тем более, решение.

Цитата:

Цитата se_arts
Окно CMD открывается и сразу закрывается. Внутри что-то написано, но не успеваю прочитать. »

Откройте окно консоли командной строки и выполните пакетный файл в нём. Будет видно.

Цитата:

Цитата se_arts
Моя задача: Есть рандомное количество папок (могут быть вложения, уровень вложений рандомный), внутри которых находится рандомное количество изображений (JPG или TIF). Необходимо в пределех каждой папки сделать свой PDF, название PDF = названию папки. »

Попробуйте так:
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
        if exist "%sSourceFolder%" (
                for /f "usebackq delims=" %%i in (`2^>nul dir /a:d /b /s "%sSourceFolder%"`) do (
                        echo [%%~fi]
                        "%ProgramFiles%\ImageMagick\magick.exe" "%%i\*.jpg" "%%i\*.tif" -format pdf "%%i\%%~ni.pdf"
                )
        ) else (
                echo Can't find source folder [%sSourceFolder%].
                exit /b 2
        )
) else (
        echo Usage: %~nx0 ^<sSource folder^>
        exit /b 1
)

endlocal
exit /b 0


Путь к целевой папке задаётся параметром пакетного файла (также можно просто перетащить папку на пакетный файл или на ярлык на этот пакетный файл).

P.S.
Цитата:

Цитата se_arts
…рандомное … рандомный … рандомное…»

Есть же два хороших слова — «случайное» и «произвольное».

webresurs 14-06-2017 10:25 2744422

Для "особо оодаренных " можно "разжевать" по подробнее??

создал два файла из постов 6 и 13 с расширением cmd,
- 6.cmd и 13.cmd,
- заменил в коде *.jpg на *.gif
- перетаскиваю на них папку пробегает dos окно и не чего...

на 13.cmd через Console Window Interceptor (Автор - Dragokas) - получил окно
Цитата:

C:\htp>setlocal enableextensions enabledelayedexpansion

C:\htp>set sSourceFolder=C:\htp\2

C:\htp>if defined sSourceFolder (if exist "C:\htp\2" (for /F "usebackq delims="
%i in (`2>nul dir /a:d /b /s "C:\htp\2"`) do (
echo [%~fi]
"C:\Program Files\ImageMagick\magick.exe" "%i\*.gif" -format pdf "%i\%~ni.pdf"

) ) else (
echo Can't find source folder [C:\htp\2].
exit /b 2
) ) else (
echo Usage: 13.cmd <sSource folder>
exit /b 1
)

C:\htp>endlocal

C:\htp>exit /b 0


Iska 14-06-2017 11:25 2744437

Не надо изобретать велосипед. Откройте окно консоли командной строки, запустите пакетный файл оттуда, указав путь к искомой папке параметром пакетного файла. Будет видно, что и как.

webresurs 14-06-2017 12:03 2744452

Цитата:

Цитата Iska
Не надо изобретать велосипед. »

- опять "25"!!!

webresurs 15-06-2017 09:14 2744712

Цитата:

Цитата Iska
Не надо изобретать велосипед »

то же самое
win+r cmd "C:\htp\13.cmd C:\htp\2"

Iska 15-06-2017 09:30 2744718

Покажите скриншот окна консоли после выполнения пакетного файла. Покажите содержимое «C:\htp\2».

alpap 15-06-2017 11:26 2744744

Цитата:

Цитата webresurs
2>nul dir /a:d /b /s "C:\htp\2" »

C:\htp\2, исходя отсюда - директория, вопрос что вы запускаете первым параметром для C:\htp\13.cmd в строке: C:\htp\13.cmd C:\htp\2

se_arts 15-06-2017 16:57 2744886

Вложений: 1
Добрый день, Iska.
Ваш код работает. Спасибо за помощь. Работает во всех вложениях (у меня были вложения до 4-ого уровня).

Я немнго переделал Ваш код, чтобы можно было запускать сам bat-файл - мне так удобнее, чем запускать через проводник методом перетягивания.
Вот код:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (`2^>nul dir /a:d /b /s "%CD%"`) do (
        echo [%%~fi]
        "d:\Work\Prog\ImageMagick\convert.exe" "%%i\*.jpg" "%%i\*.tif" convert -quality 75 "%%i\%%~ni.pdf"
        )

endlocal
exit /b 0

структура в прикрепленном файле

se_arts 12-08-2017 14:33 2757941

Вложений: 1
Добрый день.
Появилось несколько вопросов.

Вопрос 1:
Если в код добавить –resize 200, то код срабатывает, если добавляю –resize 50% или -thumbnail 50% ничего не происходит. Что я не правильно делаю?
"d:\Work\Prog\ImageMagick\convert.exe" "%%i\*.jpg" "%%i\*.tif" convert –resize 50% -quality 75 "%%i\%%~ni.pdf"
или
"d:\Work\Prog\ImageMagick\convert.exe" "%%i\*.jpg" "%%i\*.tif" convert -thumbnail 50% -quality 75 "%%i\%%~ni.pdf"

Вопрос 2:
Умеет ли ImageMagick доворачивать картинку с текстом?

Есть изображения с текстом. Мне необходимо довернуть картинку, чтобы текст был без наклона, т.е. довернуть до горизонтали или до вертикали.
На прикрепленной картинке: 1 - изображение с повернутым текстом (исходник). 2 - доворот текста до горизонтали. 3 - обрезка картинки.

Iska 12-08-2017 22:46 2757997

Цитата:

Цитата se_arts
Если в код добавить –resize 200, то код срабатывает, если добавляю –resize 50% или -thumbnail 50% ничего не происходит. Что я не правильно делаю? »

Попробуйте удвоить символ «%». Попробуйте его экранировать посредством «^». Попробуйте обрамлять «50%» двойными или одиночными кавычками.

Цитата:

Цитата se_arts
Умеет ли ImageMagick доворачивать картинку с текстом? »

Нет. Это функционал OCR, каковым ImageMagick не является.

se_arts 13-08-2017 12:39 2758064

Iska, –resize 50%% работает, спасибо.


Время: 22:20.

Время: 22:20.
© OSzone.net 2001-