2016-07-21 20 views
0

まあ、私はWebベースのアプリケーション(Elixir/Phoenixフレームワークで書かれています)を持っています。それはレストランのPOSの一種です。 複数のプリンタで「サイレント」印刷

システムは2台のアクセス可能なプリンタでrpi 3で動作します。 1つはUSB経由でローカル、もう1つはネットワークプリンタで、WIFIルーター経由で接続されています。両方のプリンタはCUPSでセットアップされ、何かを印刷する必要があるときにうまく動作します。

私はChromiumブラウザを使用しており、 "--kiosk --kiosk-printing"スイッチを使用しています。しかし、これは難しいところです。

キオスク印刷を使用しているため、ジョブを送信するときに、印刷ダイアログボックス(プリンタを選択する)が表示されず、デフォルトのプリンタがデフォルトになります。私は、自動化のために静かな印刷を使用する必要があります。したがって、ウェイターは毎回プリンターを選択する必要はありません。

web-app内には、あるプリンタに印刷する必要のあるdivがあり、別のプリンタに印刷する必要があるdivがあります。私はシンプルなJSを使用して印刷していますが、JS/HTMLでどのプリンタを使用するのかを指定することはできません。私は必要なもの(請求書を印刷するための一つのプリンタ、台所に注文を印刷するための第2プリンタ)

は異なるプリンタにジョブを送信することです。それを作る方法はわかりませんが、助言をいただければ幸いです。

ありがとうございます!

更新:見つかった JsprintsetupアドオンがFirefoxのために役立つかもしれません。今すぐテストします。

更新2: @tkowalからの提案に続いて、私は必要なことをすることができました。私は個別のtmpファイルを作成して(divを送信する代わりに)、印刷用に送信しました。あなたは(OSX上でテスト)興味があるならここに私のコードは、次のとおりです。

# Generating tmp for printing and sending jobs 
     for item <- order_items do 
     file_name = Enum.join([item.order_id, "-", item.id, ".txt"], "") 
     file_create = Enum.join(["touch", file_name], " ") 
     file_create |> String.to_char_list |> :os.cmd 
     file_inject = Enum.join(["echo", item.food.name, item.quantity, ">", file_name], " ") 
     file_inject |> String.to_char_list |> :os.cmd 

     # Send to print 
     print_path = Enum.join(["~/Developer/elixir/myApp/", file_name], "") 
     file_print = Enum.join(["lp", "-d", "HP_LaserJet_3050", print_path], " ") 
     file_print |> String.to_char_list |> :os.cmd 

     # Remove tmp file 
     file_remove = Enum.join(["rm", file_name], " ") 
     file_remove |> String.to_char_list |> :os.cmd 
     end 

答えて

1

あなたは、オペレーティングシステムと対話するSystem.cmd/3を使用することができます。必要なものを印刷して、Phoenixアプリケーションのコントローラーを使って呼び出すコマンドラインソリューションを考え出すことは良いことです。

ブラウザはサンドボックスであり、オペレーティングシステムのすべてにアクセスすることはできませんが、サーバー側のコードはほとんど何でもできるはずです。

+0

こんにちは、それは興味深い考えです!私はSystem.cmd/3について知りませんでした、今読むことができます – Ilya

+1

ちょっと@tkowal、私はあなたの答えを受け入れました、私は必要なものを行うことができた。ただし、System.cmdを直接使用する代わりに、Enum.joinを通過してから|> String.to_char_list |>:os.cmdを経由してコマンドを作成しました。 – Ilya

関連する問題