10

PHPから直接LANプリンターに印刷するための最良の方法(私の場合は既存のpdf)は何ですか? これまでのところ、何かを機能させることに成功していませんが、さらに追求する方向性はわかりません。Windows SBS 2008、PHP 5.3.9 で Apache を実行しています。

私がこれまでに知っているアプローチ:

  • shell_exec()
  • phpprintipp - これを機能させることができれば、これが最善のアプローチのように思えます
  • php_printer.dll -現在のdll が存在しません

これは、広く受け入れられているアプローチを持つ単純なタスクのようですが、これまでのところ私はそれを見つけていません。ありがとう!

4

2 に答える 2

4

これは割るのが難しいナッツです。私は、Ruby からの Windows 印刷で独自の冒険をして、外部コマンドを呼び出すことで機能するいくつかの潜在的な解決策を思いつきました。これは、PHP の世界ではor system()( /exec()を忘れないでください。特に Windows では)。それらはすべて、Windows がプリンターを認識しており、名前で参照できることを前提としています。escapeshellcmd()escapeshellarg()

  1. 文字通り、ファイルをネットワーク プリンターにリダイレクトできます。たとえば、次のようになります。

    copy /b \path\to\filename.pdf > \\Printer_Machine\Printer_Queue
    

    スイッチは/bバイナリ ファイルを指定しますが、厳密には 2012 年現在ではないことは 80% 確信しています。

  2. print次のコマンドを試すことができます。

    print /d:\\Printer_Machine\Printer_Queue \path\to\filename.pdf
    

    \d「デバイス」の略です。私は実際にこれを試したことはなく、DOS 起源のテキスト ファイルであるため、PDF で動作するのか、それともテキスト ファイルのみで動作するのかはわかりません。

  3. Adobe Reader をインストールし、そのコマンド ライン機能を使用します。

    AcroRd32.exe /t \path\to\filename.pdf "Printer Name" "Driver Name" "Port Name"
    

    お使いのサーバー環境が Reader に対応できるかどうかはわかりませんが、これが私が最も成功したソリューションです。ドキュメントはこちら (PDF、24 ページ) にあります。 コントロール パネルのプリンタのプロパティに表示される内容と正確に一致する必要がありますPrinter Name。通常は省略できると思います。Driver NamePort_Name

  4. Ghostscriptを使用して印刷します。Windows でこれを試したことはありませんが、 ドキュメントはこちら にあり、 詳細はこちらにあります。コマンドは次のようになります。

    gswin32.exe -sDEVICE=mswinpr2 -sOutputFile="%printer%Printer Name" \path\to\filename.pdf
    

    mswinpr2Windows 独自のプリンター ドライバー (上記の 2 番目のリンクを参照) を指します。" %printer%" はリテラルで必須であり、" Printer Name" はコントロール パネルのプリンター名と正確に一致する必要があります。Ghostscript には非常に多くのオプションがあり、それらの構成にはある程度の時間を費やす必要があります。

net use最後に、一般的なヒント: 次のコマンドを使用して、デバイス名を使用してネットワーク プリンターを登録できます。

C:\> net use LPT2 \\Printer_Machine\Printer_Queue /persistent:yes

これにより、ほとんどのコマンドでorの代わりに使用できるようになります。LPT2LPT2:\\Printer_...

お役に立てば幸いです。

于 2012-05-21T22:33:53.893 に答える