Nun, ich habe eine webbasierte Anwendung (in Elixir/Phoenix Framework geschrieben). Es ist eine Art POS für das Restaurant. "Silent" Drucken für mehrere Drucker
Das System läuft auf dem rpi 3 mit zwei zugänglichen Druckern. Einer ist lokal über USB, einer ist ein Netzwerkdrucker, der über den WLAN-Router verbunden ist. Beide Drucker wurden mit CUPS eingerichtet und funktionieren gut, wenn ich etwas drucken muss. Ich verwende den Chromium-Browser und die Schalter "--kiosk --kiosk-printing". Aber hier wird es schwierig. Während ich das Kiosk-Drucken verwende, wird beim Senden eines Jobs das Dialogfeld zum Drucken (zum Auswählen des Druckers) und der Standarddrucker nicht angezeigt. Ich muss lautlos drucken, wegen der Automatisierung. So müssen die Kellner nicht jedes Mal den Drucker auswählen. Innerhalb der Web-App habe ich bestimmte divs, die auf einem Drucker gedruckt werden müssen, und andere zu einem anderen. Ich benutze einfache JS zum Drucken, aber ich kann nicht rein mit JS/HTML welchen Drucker für welchen Job zu verwenden. (Ein Drucker Rechnung, zweiten Drucker zu drucken Aufträge in die Küche drucken)Was ich brauche, ist es, Arbeitsplätze zu verschiedenen Druckern zu senden. Nicht sicher, wie man es macht, aber jede Beratung geschätzt.
Vielen Dank im Voraus! Update: Gefunden Jsprintsetup Add-on für Firefox, die helfen könnte. Wird jetzt testen. Update 2: Nach dem Vorschlag von @tkowal konnte ich tun, was ich brauche. Ich habe am Ende einzelne tmp-Dateien erstellt (anstatt div zu senden) und sie zum Drucken gesendet. Hier ist mein Code, wenn Sie interessiert (getestet auf OSX) sind:# 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
Hey, das ist eine interessante Idee! Ich wusste nichts über System.cmd/3, werde jetzt lesen – Ilya
Hey @tkowal, ich habe deine Antwort akzeptiert, da ich in der Lage war zu tun, was ich brauche. Anstatt jedoch direkt System.cmd zu verwenden, habe ich zuerst Befehle erstellt, dann Enum.join und dann |> String.to_char_list |>: os.cmd übergeben, da es mir mehr Flexibilität gab! – Ilya