Это не вопрос Ghostscript. Если вы получите правильные аргументы, то параметры, переданные Ghostscript, будут правильными, и выходной файл будет тем, что вы хотите.
Вы еще не сказали, что пытались, так что довольно сложно делать предложения. Однако вы должны иметь возможность использовать% ~ dp1 и / или% ~ n1 вместо простого% 1, чтобы развернуть его только до пути или файла. Существуют и другие варианты, ввод «help for» в командной строке Windows даст вам более подробную информацию.
Как всегда, обратите внимание, что Ghostscript не сжимает PDF-файлы. Используя -dPDFSETTINSG=/ebook
, вы создаете совершенно новый PDF-файл, который изменил содержимое оригинала (например, изображение будет сокращено).
Также последовательность -c .setpdfwrite -f
была избыточной годами, она вам не нужна.
[РЕДАКТИРОВАТЬ]
Этот пакетный файл демонстрирует использование расширения переменной командной оболочки в пакетном файле
@ECHO OFF
ECHO Input file is %1
ECHO Input directory is %~dp1
\ghostpdl\debugbin\gswin32c -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=%~dp1\new.pdf %1
При сохранении как test.bat и последующем тесте d: \ temp \ input.ps генерируется следующий вывод:
Input file is d:\temp\input.ps
Input directory is d:\temp\
GPL Ghostscript GIT PRERELEASE 9.28 (2019-04-04)
Copyright (C) 2019 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
И в каталоге d: \ temp
создается файл new.pdf.
Таким образом, расширение переменной работает, как и ожидалось, потому что это происходит до выполнения командной строки.
Если это все еще не работает для вас, вам придется предоставить больше информации. На вашем месте я бы начал с удаления ключей -dNOPAUSE и -dBATCH из командной строки, по крайней мере, таким образом вы сможете увидеть, пытается ли Ghostscript вам что-то сказать.