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