我对Postscript和Ghostscript很陌生 如何将参数传递给ps文件? 我执行以下操作后,会执行一些计算并将结果存储在变量$ par1中的powershell脚本
gswin64c.exe -o "result.pdf" -sDEVICE=pdfwrite pdfProc.ps -f "input.pdf"
我想在pdfProc.ps中使用$ par1值,但是除了将pdfProc.ps的所有代码写入-o参数之外,我找不到正确的方法
答案 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(注意,通常应使用known
或where
来检查是否存在变量,以免在未定义的情况下出错)。
像这样的简单程序
%!PS
/NumApples where {
/NumApples get
(Number of apples is ) print ==
}{
(NumApples not defined\n) print
} ifselse
将在上面的命令行中显示结果4。
顺便说一句,我不理解您的意思是“将pdfProc.ps中的所有代码都写入-o参数中”。 -o开关仅指定输出文件名,并暗示-dBATCH
-dNOPAUSE
,它不处理PostScript或类似的东西。