Извините мой английский. Насколько мне известно, Ghostscript не поддерживает преобразование файлов по маске (*) из команды, и все файлы должны быть явно указаны в команде (0001.jpg, 0002.jpg). Я наткнулся на два таких скрипта, содержащих преобразование маски, но не смог выяснить причину, почему это не работает:
@echo off
if %1.==Sub. goto %2
for %%f in (F:\myFOLDER\*.jpg) do call %0 Sub action %%~nf
goto end
:action
"C:\Program Files (x86)\gs\gs10.01.1\bin\gswin32c.exe" -q -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=F:\myFOLDER\%3.pdf F:\myFOLDER\%3.jpg -c quit
:end
echo
dir = "F:\myFOLDER"
output_file = "F:\myFOLDER\out.pdf"
pause
args = ""
for file in `find ${dir} -name "*.JPG" -o -name "*.JPEG" -o -name "*.jpg" -o -name "*.jpeg" -type f`;
do
args = "${args} (${file}) viewJPEG showpage"
done
"C:\Program Files (x86)\gs\gs10.01.1\bin\gswin32c.exe" -q -dNOSAFER -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=${output_file} "C:\Program Files (x86)\gs\gs10.01.1\lib\viewjpeg.ps" -c ${args}
Пробовал редактировать код на примерах из интернета, но знаю недостаточно.
Есть много веб-фрагментов, которые не гарантируют, что они будут работать для других людей, которые просто вырезают и вставляют.
Итак, во-первых, Ghostscript принимает только pdf в качестве входных данных и jpg в качестве выходных, а не наоборот, ЕСЛИ вы не используете Postscript, который принимается в качестве входных данных.
Следовательно, у этого есть ограничения, такие как избегайте имен файлов, которые содержат небезопасные символы, такие как символ пробела, и если вам нужно запустить программируемую команду, делайте это только с известными локальными именами файлов.
Таким образом, вам нужно заставить GhostScript отображать и печатать .jpg с помощью средства просмотра, которое на короткое время высвечивает экран (вы не должны избегать этой необходимости) и конвертировать его в PDF.
Используя NOSAFER, он запустит Postscript от имени текущего пользователя, поэтому запускайте известный скрипт только в безопасных локальных файлах.jpg
@echo off
set "GSBIN=C:\Program Files (x86)\gs\gs10.01.1\bin"
set "FOLDER=F:\myFOLDER"
cd /d "%folder%"
for %%f in (*.jpg) do %GSBIN%\gswin32 -sDEVICE=pdfwrite -dNOSAFER -o "%%~nf.pdf" "%GSBIN%\..\lib\viewjpeg.ps" -c "(""%%~f"") viewJPEG" -f
cd /d "%~dp0"
Вышеупомянутый микс Windows как часть обоих ваших источников позволит только один jpg на pdf. Он намеренно использует версию Windowed NOT Console (НЕ gswin##C.exe)
Для нескольких JPG в PDF родственные продукты ArtifeX GhostPDL или MuTool лучше подходят для этой задачи, поскольку они оба принимают входные данные JPG напрямую.
Чтобы создать многостраничный PDF-файл с помощью приведенного выше сценария, вам нужно будет написать вторую строку для слияния.
К сожалению, не работает ни при запуске по умолчанию, ни при изменении переменных на явные пути i.imgur.com/SoGFBqz.png
У меня Win7, может в этом проблема?
Win7 64 // gs10.01.1
cd /d "F:\myFOLDER" for %%f in ("*.jpg") do "C:\Program Files (x86)\gs\gs10.01.1\bin\gswin32c.exe" -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dNOSAFER -o "F:\myFOLDER\okkkkk.pdf" "C:\Program Files (x86)\gs\gs10.01.1\lib\viewjpeg.ps" -c "(""%%~f"") viewJPEG" -f cd /d "%~dp0"
Точно, работает! Я видел в сети примеры с использованием gswin32c, поэтому подумал, что разницы нет. Но я так понимаю, что одновременное сохранение нескольких jpg в один файл не поддерживается?
Я попробовал img2pdf и использовал Ghostscript, потому что у него есть сохранение в формате pdf с оптимизацией (-dPDFSETTINGS=/ebook
...)
Доступна ли где-нибудь ваша разработка zip to cbz?
Ваша первая партия должна работать, но она слишком сложна. Что он делает из того, что не должен делать, и чего не делает из того, что должен делать? Какие сообщения об ошибках он выдает? Используйте кнопку
edit
, чтобы включить эти дополнительные данные в свой вопрос. Второй код не пакет Windows.