请考虑以下在Windows命令行上调用的ghostscript命令。
"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\download\133679.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\download\133679.pdf"
出现打印窗口。我没有更改命令的其他部分。是什么导致这种情况发生?如何停止显示打印窗口?
答案 0 :(得分:1)
操作数对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\download\133679.pdf"
一旦到达-c
,Ghostscript就会停止处理命令行,并运行PostScript。此时,我们还没有遇到-dNOPROMPT
,和,因为您尚未(尚未)设置打印机,因此Ghostscript不知道要使用哪种打印机,这并不奇怪,该打印机弹出窗口。
Ghostscript会将命令行的其余部分作为PostScript进行处理,直到到达-f
,或者实际上是任何以-
开始的开关为止。您尚未在其中放置-f,但我强烈建议您这样做。一旦您开始将命令行作为PostScript处理之后,您就无需放置secopnd -c
,直到停止为止。我还怀疑您确实不希望在其中使用quit
。这将终止解释器,这意味着您将放弃通过setpagedevice进行的更改,因为解释器将返回默认状态。
在处理-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\download\133679.pdf"
会好得多。请注意,您的初始命令行有一个重复的NOPAUSE,并且同时指定了NOPROMPT和NOPAGEPROMPT(如果您设置NOPROMPT,则不需要NOPAGEPROMPT,如果您设置NOPAUSE,则不需要)。
最后,我会敦促不要使用-dNOSAFER
,虽然它目前没有任何效果(因为这是默认设置),但我们很快将SAFER设置为默认值并将{{1 }}将大大降低您运行文件时的安全性。
您现在应该真正使用-dNOSAFER
。有许多CVE对此表示反对,并且如果您不不使用,则目前正在传播的概念证明会对您的计算机产生不良影响(运行任意可执行文件,打开,写入,删除文件等)。 -dSAFER
。如果您不知道为什么要使用-dSAFER
,请改用-dNOSAFER
。
哦,您还应该升级到当前版本9.27,因为您使用的版本已经使用了一年。