如何在靜默模式下使用 Ghostscript 進行列印

如何在靜默模式下使用 Ghostscript 進行列印

我正在使用以下 Ghostscript 命令來列印 postscript 文件:

C:\Program Files\gs\gs9.14\bin>gswin64c.exe -sDEVICE=mswinpr2 testprinter.ps

此命令開啟一個「列印」對話框,我可以在其中更改印表機、指定列印範圍和份數以及「確定」和「取消」按鈕。

然而,我的要求是讓 Ghostscript 只是靜默列印,抑制列印對話框。

是否有一個命令開關可以讓我靜默列印?所以我只需發出命令,印表機就會列印它。

我無法從 Google 或互聯網上其他各種 Ghostscript 文件獲取任何資訊。所以我想諮詢一下友好且知識淵博的人超級用戶社區。

答案1

摘自幽靈腳本文檔, MS Windows 印表機

如果 -sOutputFile 中未指定 Windows 印表機名稱,Ghostscript 將使用標準列印設定對話方塊提示輸入 Windows 印表機。 …

例如,如果使用格式「%printer%printer_name」在 -sOutputFile 中指定 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"     

相關內容