如何在静音模式下使用 ghostscript 进行打印

如何在静音模式下使用 ghostscript 进行打印

我正在使用以下 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"     

相关内容