如何将参数传递到ps脚本

时间:2019-08-30 12:07:07

标签: ghostscript postscript

我对Postscript和Ghostscript很陌生 如何将参数传递给ps文件? 我执行以下操作后,会执行一些计算并将结果存储在变量$ par1中的powershell脚本

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

我想在pdfProc.ps中使用$ par1值,但是除了将pdfProc.ps的所有代码写入-o参数之外,我找不到正确的方法

1 个答案:

答案 0 :(得分:2)

对于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。

顺便说一句,我不理解您的意思是“将pdfProc.ps中的所有代码都写入-o参数中”。 -o开关仅指定输出文件名,并暗示-dBATCH -dNOPAUSE,它不处理PostScript或类似的东西。