web-dev-qa-db-ja.com

プリンターを選択してサイレント印刷する

この回答 は、Google Chromeでサイレント印刷を有効にする方法を示しています。しかし、私は2つのWebページを持っています。これらのWebページは、ユーザーの操作なしに2つの異なるプリンターを使用して静かに印刷する必要があります。 window.print()を呼び出す前にプリンターを自動的に選択する方法はありますか?本当に必要な場合は、Chrome拡張機能を書いてもかまいません。

13
rightfold

おそらく、Google Clound Printを使用してプリンターをセットアップし、次に クラウドプリンティングAPI を使用して、それらにジョブをサイレントで送信できます。ジョブを送信するときにプリンターIDを指定できるようです。 Webページをラスタライズするには、 html2canvas のようなものを使用する必要があるかもしれません。

26
Nathan Breit

あなたが知っている環境にいて、十分な特権を持っている場合(おそらく、使用したいプリンターを知っているので)、コマンドラインから変更を試みることができます。このためには、

@RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"

プリンタ名は、コントロールパネルに表示される値である必要があります。

JavaScriptからコマンドラインを呼び出す場合、適切なActiveXコントロールを有効にすると、次のコマンドを使用できます。

var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");

また、Shell.application ShellExecuteで試すこともできます

 var objShell = new ActiveXObject("Shell.application");
objShell.ShellExecute("cmd.exe", 'RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"', "C:\\WINDOWS\\system32", "open", 1);

詳細については、 http://msdn.Microsoft.com/en-us/library/windows/desktop/gg537745(v = vs.85).aspx にアクセスしてください。

私はそれをテストしていないので、頑張ってください!

7
Carlos Robles

F#でサーバーを作成し、WebSocketを介してサーバーと通信することになりました。

4
rightfold

回答を検索しましたが、プログラムでプリンターを設定する方法がないようです。したがって、おそらく複雑な解決策:

オペレーティングシステムのデフォルトプリンターを切り替えることができるコマンドラインアプリケーションを作成します。たぶん、プリンタを無効にしたり有効にしたりできるアプリケーションでしょう。 Windowsを使用している場合、.NETアプリケーションはおそらくこれを実行できます。 Linuxの場合、プリンター管理用のコマンドラインインターフェイスが必要です(確かにわかりません)。

ここで、例えば、プリンターの有効化/無効化プログラムを呼び出すことができるPHP、asp.net、またはRubyなどのページを作成します。

これが機能している場合は、JavaScript呼び出しを使用して、最初にプリンター1に印刷し、その後、プリンター2に切り替えます。ただし、いくつかの欠点があります。

  • プリンター1がドキュメントを印刷している場合、プリンター2に切り替えることはできません。これにより、プリンター1が無効になるためです。したがって、どういうわけか、一般的な作業にかかる時間を計る必要があります。
  • このソリューションには多くのオーバーヘッドがあります。プリンター間の切り替えのために追加の呼び出しを行う必要があります
  • プリンタースイッチプログラムとWebサービスを保守する必要があるため、保守性は絶対に最適ではありません。

誰かがより良い解決策を考え出すことを願っていますが、少なくとも私の考えを共有したかったのです。多分彼らはあなたの問題を解決するのにあなたを助けます。

2
Bas van Dijk