Как добавить имя выходного файла, используя имя входного файла без расширения при использовании ghostscript? - PullRequest
0 голосов
/ 17 мая 2019

Я использую GS для «сжатия» PDF в 2 клика.Я добавил контекстное меню в регистр Windows с указанным выше кодом.

Например, если я использую его в test.pdf, выходной файл будет test.pdf-сжатый.pdf.Это работает, но я хотел бы избавиться от расширения в имени файла.Есть ли способ сделать это?

Я попытался использовать аргументы cmd, но, похоже, он не работает с postscript.

C:\Program Files\gs\gs9.27\bin\gswin64c.exe -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dCompatibilityLevel=1.4 -sOutputFile=%1%-compressed.pdf -c .setpdfwrite -f %1

1 Ответ

0 голосов
/ 17 мая 2019

Это не вопрос 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 вам что-то сказать.

...