我正在使用以下 Ghostscript 命令来打印 postscript 文档:
C:\Program Files\gs\gs9.14\bin>gswin64c.exe -sDEVICE=mswinpr2 testprinter.ps
此命令打开一个打印对话框,在其中我可以更改打印机、指定打印范围和份数,以及使用“确定”和“取消”按钮。
然而我的要求是让 Ghostscript 只是静默打印并抑制打印对话框。
有没有命令开关可以让我静默打印?这样我就可以发出命令,打印机就可以打印。
我无法从 Google 或互联网上的其他各种 Ghostscript 文档中获得任何信息。所以我想向友好且知识渊博的人咨询超级用户社区。
答案1
摘自ghostscript 文档、MS Windows 打印机
如果 -sOutputFile 中未指定 Windows 打印机名称,Ghostscript 将使用标准打印设置对话框提示使用 Windows 打印机。...
如果在 -sOutputFile 中使用“%printer%printer_name”格式指定 Windows 打印机名称,例如
gs ... -sOutputFile="%printer%Apple LaserWriter II NT"
然后 Ghostscript 会尝试打开 Windows 打印机而不提示(当然,除非打印机连接到 FILE:)
根据最终流程的工作方式,也许您还需要-dBATCH
和-dNOPAUSE
开关
笔记: %printer%
对 Ghostscript 来说是一个文字,但是其语法会与视为变量读取操作的cmd
解析器发生冲突。%printer%
在批处理文件中,可以通过将百分号加倍来转义百分号(%%printer%%
),但在命令行模式下,如果百分号位于带引号的字符串内,则无法对其进行转义(如文档中所示,它们需要处理参数中的空格)。
在命令行模式下有两种选择:
- 确保
printer
环境变量不存在(如果不存在,则不执行读取操作,并且文字%printer%
保留在最终执行的命令中)。 - 定义一些环境变量,以便在执行读取操作时生成的命令是正确的。
仅一些命令行示例:
rem ensure the variable does not exist
set "printer="
gs ... -sOutputFile="%printer%Apple LaserWriter II NT"
rem store the full literal
set p=%^printer%
gs ... -sOutputFile="%p%Apple LaserWriter II NT"
rem store the percent sign
set "p=%"
gs ... -sOutputFile="%p%printer%p%Apple LaserWriter II NT"