首页 > 解决方案 > Ghostscript - 如何在 Windows10 或 Windows Server 2012 上抑制打印对话框

问题描述

我正在从 Windows 10 或 Windows Server 2012 下的 Windows 服务调用以下内容(用于执行命令的 C# 程序),但没有打印任何内容。我可以将发送的命令复制并粘贴到命令提示符中,但它会弹出一个打印对话框,我必须单击“确定”才能打印文件(它确实如此)。我需要添加什么开关以使对话框不会出现并且文件将直接打印而无需用户干预,因为其目的是作为 Windows 服务在无人值守的情况下工作?这是 Ghostscript 9.50,它是今天最新的。在较早版本的 ghostscript 中,如果设备设置为 ljet4,这会起作用,但这会导致 9.50 出现错误。此外,输出文件在输出文件上没有 %printer% 前缀,之前它的前缀是 \\spool\。我已经尝试了所有这些组合。是导致不需要的对话框的 mswinpr2 吗?我猜这是阻止打印发生的原因。

gswin64c -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies#1 -sDEVICE#mswinpr2 -sOutputFile#"%%printer%%HP LaserJet Professional P1109w" "\\2-DYQJKC2\c$\Webs\myfolder\Public\Reports\HIPAACert\189\H01519447A2191016103332.pdf"

标签: printingghostscript

解决方案


我最近遇到了同样的问题。我添加了一个 -dQueryUser=3 参数。有关使用 -dQueryUser=N 的文档可在以下位置找到: https ://www.ghostscript.com/doc/9.25/Devices.htm#Win 在 10.2 支持的选项(设备属性)部分。

在 Windows 10 上的批处理文件中说明这一点的代码是:

SET MY_EXECUTABLE_PATH=C:\Program Files\gs\gs9.53.3\bin
for %%i in (*.pdf) do "%MY_EXECUTABLE_PATH%"\gswin64c.exe -sDEVICE=mswinpr2 -dBATCH -dNOPAUSE -dPDFFitPage -dQueryUser=3 -sOutputFile="%printer%Printer_Name" "%%i"

推荐阅读