Veröffentlicht:
Die meisten Anleitungen zum rohen ZPL-Druck setzen einen Netzwerkdrucker voraus: Socket zu Port 9100 öffnen, Etikett schreiben. Ein Desktop-Drucker am USB-Kabel hat diesen Port nicht. Er ist nur über den Rechner erreichbar, an dem er hängt — und das ändert, wie eine Cloud-Anwendung ein Etikett auf ihn bringt.
Ein USB-Drucker erscheint im Betriebssystem als Druckwarteschlange — der Spooler unter Windows, CUPS unter macOS und Linux. Nichts im Netzwerk kann ihn direkt ansprechen; ein Server in der Cloud erreicht ihn nicht so, wie ein Netzwerkdrucker erreicht wird. Etwas auf diesem Rechner muss das Etikett annehmen und an die Warteschlange übergeben.
Ein Druckertreiber rendert normalerweise eine Seite und schickt dem
Drucker eigene Befehle. Für ZPL ist das falsch: Die Etikettensprache muss
den Drucker genau so erreichen, wie sie geschrieben wurde. Unter macOS und
Linux wird der Auftrag mit lp -d WARTESCHLANGE -o raw
übergeben; unter Windows mit dem Datentyp RAW. Den macOS-Fall haben wir an
einem Zebra GK420d über USB gemessen: Die mit dem Treiber "Zebra ZPL Label
Printer" angelegte Warteschlange ließ rohes ZPL unverändert durch, und das
gedruckte Etikett entsprach der Vorschau am Bildschirm. Eine treiberlose
Raw-Warteschlange funktioniert genauso.
Der Labelixa-DirectPrint-Agent ist ein kleines Programm auf dem Rechner, an dem der Drucker hängt. Er holt Druckaufträge über eine ausgehende Verbindung von der Labelixa-API ab — es wird kein eingehender Port geöffnet — und übergibt jeden als Rohdaten an die Warteschlange. Einrichtung:
labelixa-agent pair CODE.adaptor: "os_driver" registrieren
(POST /v1/devices).labelixa-agent discover
-queues.labelixa-agent map-printer
-device GERAETE_ID -queue "NAME".labelixa-agent install.Die vollständige Referenz steht in der API-Dokumentation.
An einer USB-Warteschlange ist submitted_to_os die weiteste
Stufe, die ein Auftrag melden kann: Das Betriebssystem hat ihn angenommen.
Die Warteschlange meldet keinen Druckerstatus; ein ausgeschalteter Drucker
oder einer ohne Etiketten ist in der Warteschlange des Betriebssystems zu
sehen, nicht im Auftragsdatensatz. Wir haben das gemessen: Ein Auftrag bei
ausgeschaltetem Drucker wurde als zugestellt gemeldet, wartete in der
macOS-Warteschlange und wurde nach dem Einschalten gedruckt — der Agent
sendete ihn nicht erneut, es gab keinen Doppeldruck. Ein Auftrag mit drei
Kopien ergab drei Etiketten.
Alles oben Genannte wurde unter macOS (Apple Silicon) mit einem Zebra GK420d über USB gemessen, einschließlich des automatischen Starts nach einem Neustart. Dieselben Befehle gibt es unter Windows und Linux, gedruckte Ergebnisse haben wir dort aber noch nicht geprüft; kontrollieren Sie die ersten Etiketten, bevor Sie sich darauf verlassen.
Ein Thermodrucker kennt kein Rückgängig. Rendern Sie das ZPL zuerst im
ZPL-Viewer oder über die Render-API — so
fallen Felder außerhalb des Etiketts, ein fehlendes ^XZ und
nicht kodierbare Barcodedaten auf, bevor sich Material bewegt.
Etiketten auf dem falschen Drucker sind kein Pech, sondern ein Identitätsproblem: Warteschlangennamen, DHCP-Leases, geteilte Treiber. Diagnose und Vorbeugung.
ZPL unter macOS und Linux über eine CUPS-Raw-Queue druckenRaw-Warteschlange in CUPS mit lpadmin einrichten, ZPL mit lp senden — und die Falle vermeiden, dass eine filternde Queue den ZPL-Code als Text druckt.
Druckeridentität: warum Warteschlangennamen und IPs Sie täuschenJede Schicht des Etikettendruck-Stacks erkennt einen Drucker an etwas Veränderlichem: Name, Port-Zuordnung, DHCP-Lease. Anatomie verirrter Druckaufträge.
ZPL aus dem Browser druckenEin Browser kann keinen Socket zu Port 9100 öffnen. Die drei Muster, die ZPL aus einer Web-App wirklich ausliefern, und ihr Preis.