向 Ghostscript 命令添加 -c 选项时,打印机弹出窗口出现,即使它已被抑制

When adding a -c option to a Ghostscript command the printer popup appears even though it has been suppressed

考虑以下从命令行调用的 ghostscript 命令 windows。

"C:\Program Files\gs\gs9.23\bin\gswin64c.exe" -sDEVICE=mswinpr2  -dORIENT1=false -dNOPROMPT -dNOPAUSE -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dFIXEDMEDIA -dDEVICEWIDTHPOINTS=398 -dDEVICEHEIGHTPOINTS=157 -dNOPAGEPROMPT -dQUIET -dNumCopies=1 -sOutputFile="\spool\BWLAB05" "c:\print\download3679.pdf"

这个命令效果很好。打印出来,没有弹出框。现在我添加以下内容。

-c "<</Orientation 2>>setpagedevice"

上面的命令使

"C:\Program Files\gs\gs9.23\bin\gswin64c.exe" -sDEVICE=mswinpr2 -c "<</Orientation 2>>setpagedevice" -c "quit"  -dORIENT1=false -dNOPROMPT -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dFIXEDMEDIA -dDEVICEWIDTHPOINTS=398 -dDEVICEHEIGHTPOINTS=157 -dNumCopies=1 -sOutputFile="\spool\BWLAB05" "c:\print\download3679.pdf"

打印 window 出现。我没有更改命令的其他部分。是什么导致这种情况发生?我怎样才能停止打印 window 出现?

Ghostscript 的操作数顺序很重要。特别是在使用 -c 开关时,它引入了要执行的 PostScript。

实际上你是 运行 这里的两个命令:

-sDEVICE=mswinpr2 -c "<</Orientation 2>>setpagedevice" -c "quit"  

-dORIENT1=false -dNOPROMPT -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dFIXEDMEDIA -dDEVICEWIDTHPOINTS=398 -dDEVICEHEIGHTPOINTS=157 -dNumCopies=1 -sOutputFile="\spool\BWLAB05" "c:\print\download3679.pdf"

一旦它命中 -c,Ghostscript 就会停止处理命令行,并运行 PostScript。在这一点上我们还没有遇到 -dNOPROMPT 因为你还没有(还)设置打印机,Ghostscript 不知道要使用什么打印机,所以,毫不奇怪, 出现打印机弹出窗口。

Ghostscript 继续像 PostScript 一样处理命令行的其余部分,直到它到达 -f,或者实际上任何开关开始 -。你没有放 -f 在那里,但我强烈建议你这样做。您也不需要放置第二个 -c,一旦您开始按照 PostScript 处理命令行,它就会继续,直到您停止它。我还怀疑您真的不想要那里的 quit 。这会终止解释器,这意味着您通过 setpagedevice 引入的更改将被丢弃,因为解释器 returns 处于默认状态。

处理完 -c 的内容后,Ghostscript 继续处理命令行的剩余部分。这次有 -dNOPROMPT,所以您不会收到提示。

我希望这样:

"C:\Program Files\gs\gs9.23\bin\gswin64c.exe" -sDEVICE=mswinpr2 -dORIENT1=false -dNOPROMPT -dPrinted -dBATCH -dNOSAFER -q -dFIXEDMEDIA -dDEVICEWIDTHPOINTS=398 -dDEVICEHEIGHTPOINTS=157 -dNumCopies=1 -sOutputFile="\spool\BWLAB05" -c "<</Orientation 2>>setpagedevice" -f "c:\print\download3679.pdf"

会更好。请注意,您的初始命令行有一个重复的 NOPAUSE 并指定了 NOPROMPT 和 NOPAGEPROMPT(如果您设置了 NOPROMPT,则不需要 NOPAGEPROMPT,如果您设置了 NOPAUSE,则两者都不需要)。

最后我会 敦促 你不要使用 -dNOSAFER,虽然它目前没有效果(因为这是默认设置)我们很快就会将 SAFER 设置为默认设置当 运行 个文件时,设置 -dNOSAFER 将大大降低您的安全性。

你现在真的应该使用 -dSAFER。如果您 不这样做,则有许多针对此的 CVE 和概念证明可能会对您的计算机产生不良影响(运行 任意可执行文件、打开、写入、删除文件等) t 使用 -dSAFER。如果您不知道为什么要 -dNOSAFER,请改用 -dSAFER

哦,你也升级到现在的版本,9.27,你用的版本是一年前的。