如何将参数传递给 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(注意您通常应该使用 known
或 where
来检查变量的存在,以避免在未定义时出错。
像这样一个简单的程序
%!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 或类似的东西。
我对 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(注意您通常应该使用 known
或 where
来检查变量的存在,以避免在未定义时出错。
像这样一个简单的程序
%!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 或类似的东西。