サイレントモードでゴーストスクリプトを使用して印刷する方法

サイレントモードでゴーストスクリプトを使用して印刷する方法

次の Ghostscript コマンドを使用して、PostScript ドキュメントを印刷しています。

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

このコマンドは、プリンターを変更したり、印刷範囲とコピー数を指定したり、[OK] ボタンと [キャンセル] ボタンを備えた [印刷] ダイアログを開きます。

ただし、私の要件は、印刷ダイアログを抑制して Ghostscript が黙って印刷するようにすることです。

静かに印刷できるコマンド スイッチはありますか? コマンドを発行するだけで、プリンターが印刷します。

Googleやインターネットで入手できる他のGhostscriptドキュメントから情報を得ることができませんでした。そこで、親切で知識豊富な人に確認したいと思います。スーパーユーザーコミュニティ。

答え1

抜粋ゴーストスクリプトのドキュメント、MS Windows プリンター

-sOutputFile に Windows プリンター名が指定されていない場合、Ghostscript は標準の印刷設定ダイアログ ボックスを使用して Windows プリンターの入力を要求します。...

たとえば、Windowsプリンタ名が「%printer%printer_name」という形式で-sOutputFileに指定されている場合、

gs ... -sOutputFile="%printer%Apple LaserWriter II NT" 

その後、Ghostscript はプロンプトを表示せずに Windows プリンターを開こうとします (もちろん、プリンターが FILE: に接続されている場合は除きます)。

最終的なプロセスがどのように機能するかに応じて、スイッチも必要になる場合があり-dBATCHます-dNOPAUSE

ノート: は %printer%Ghostscript ではリテラルですが、構文は変数読み取り操作としてcmd認識されるパーサーと衝突します。%printer%

バッチ ファイル内では、パーセント記号は二重にすることでエスケープできます ( %%printer%%)。ただし、コマンド ライン モードでは、引用符で囲まれた文字列内にあるパーセント記号をエスケープする方法はありません (ドキュメントに示されているように、パーセント記号は引数内のスペースを処理するために必要です)。

コマンドライン モードには 2 つの選択肢があります。

  • 環境変数が存在しないことを確認します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"     

関連情報