如何将参数传递给 ps 脚本

How can I pass arguments into ps script

我对 postscript 和 ghostscript 很陌生 如何将参数传递到 ps 文件? 我有 powershell 脚本,它可以进行一些计算并将结果存储在变量 $par1 中,然后我执行类似这样的事情

gswin64c.exe -o "result.pdf" -sDEVICE=pdfwrite pdfProc.ps -f "input.pdf"

我想在 pdfProc.ps 中使用 $par1 值,但是除了将 pdfProc.ps 中的所有代码写入 -o 参数

之外,我找不到正确的方法

仅对于 Ghostscript ,命令行中的参数保留在 PostScript 环境中。这不是 PostScript 解释器的常见行为,因此如果您使用此功能,您将限制您的程序使用 Ghostscript。

设备无法识别的命令行上的任何开关都存储在 (IIRC) systemdict 中。有两种开关; -s和-d,-s引入字符串变量,-d引入名称或数字。

举个具体的例子,如果我想定义苹果的数量,我可能会这样做:

gswin64c -dNumApples=4 -sDEVICE=pdfwrite -o out.pdf pdfProc.ps input.pdf

您的 PostScript 程序 (pdfProc.ps) 然后可以使用命名变量 /NumApples,其值为 4(注意您通常应该使用 knownwhere 来检查变量的存在,以避免在未定义时出错。

像这样一个简单的程序

%!PS
/NumApples where {
  /NumApples get
  (Number of apples is ) print ==
}{
  (NumApples not defined\n) print
} ifselse

将为上面的命令行打印结果 4。

顺便说一句,我不明白你所说的 "except of write all code from pdfProc.ps into -o parameter" 是什么意思。 -o 开关仅指定输出文件名,并暗示 -dBATCH -dNOPAUSE,它不处理 PostScript 或类似的东西。