これは割るのが難しいナッツです。私は、Ruby からの Windows 印刷で独自の冒険をして、外部コマンドを呼び出すことで機能するいくつかの潜在的な解決策を思いつきました。これは、PHP の世界ではor system()
( /exec()
を忘れないでください。特に Windows では)。それらはすべて、Windows がプリンターを認識しており、名前で参照できることを前提としています。escapeshellcmd()
escapeshellarg()
文字通り、ファイルをネットワーク プリンターにリダイレクトできます。たとえば、次のようになります。
copy /b \path\to\filename.pdf > \\Printer_Machine\Printer_Queue
スイッチは/b
バイナリ ファイルを指定しますが、厳密には 2012 年現在ではないことは 80% 確信しています。
print
次のコマンドを試すことができます。
print /d:\\Printer_Machine\Printer_Queue \path\to\filename.pdf
\d
「デバイス」の略です。私は実際にこれを試したことはなく、DOS 起源のテキスト ファイルであるため、PDF で動作するのか、それともテキスト ファイルのみで動作するのかはわかりません。
Adobe Reader をインストールし、そのコマンド ライン機能を使用します。
AcroRd32.exe /t \path\to\filename.pdf "Printer Name" "Driver Name" "Port Name"
お使いのサーバー環境が Reader に対応できるかどうかはわかりませんが、これが私が最も成功したソリューションです。ドキュメントはこちら
(PDF、24 ページ) にあります。
コントロール パネルのプリンタのプロパティに表示される内容と正確に一致する必要がありますPrinter Name
。通常は省略できると思います。Driver Name
Port_Name
Ghostscriptを使用して印刷します。Windows でこれを試したことはありませんが、
ドキュメントはこちら
にあり、
詳細はこちらにあります。コマンドは次のようになります。
gswin32.exe -sDEVICE=mswinpr2 -sOutputFile="%printer%Printer Name" \path\to\filename.pdf
mswinpr2
Windows 独自のプリンター ドライバー (上記の 2 番目のリンクを参照) を指します。" %printer%
" はリテラルで必須であり、" Printer Name
" はコントロール パネルのプリンター名と正確に一致する必要があります。Ghostscript には非常に多くのオプションがあり、それらの構成にはある程度の時間を費やす必要があります。
net use
最後に、一般的なヒント: 次のコマンドを使用して、デバイス名を使用してネットワーク プリンターを登録できます。
C:\> net use LPT2 \\Printer_Machine\Printer_Queue /persistent:yes
これにより、ほとんどのコマンドでorの代わりに使用できるようになります。LPT2
LPT2:
\\Printer_...
お役に立てば幸いです。