向 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,你用的版本是一年前的。
考虑以下从命令行调用的 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,你用的版本是一年前的。