Veröffentlicht:
ZPL ist eine Druckersprache: Der Drucker selbst rendert sie. Unter macOS und Linux ist das Drucksystem CUPS — und CUPS tut normalerweise das Gegenteil dessen, was ein ZPL-Auftrag braucht: Es schickt jeden Auftrag durch Filter, die Dokumente in Druckerbefehle umwandeln. Ihr Auftrag ist bereits Druckerbefehle; die Warteschlange muss die Bytes unangetastet durchreichen. Genau das macht eine Raw-Warteschlange.
Hängt an der Queue ein Treiber oder Filter, passiert eines von zwei
Dingen: Der Filter weist den Auftrag ab, oder — das klassische Symptom —
der Drucker druckt Ihren ^XA…^XZ-Quelltext als
sichtbaren Text aufs Etikett. Das Etikett ist nicht kaputt; die
Queue hat ZPL für ein Dokument gehalten. Im ZPL lässt sich das nicht
beheben: Es ist eine Queue-Einstellung.
macOS wie Linux bringen lpadmin mit:
sudo lpadmin -p zebra-raw -E -v socket://192.168.1.50:9100 -m raw
-p benennt die Queue, -E aktiviert sie,
-v ist die Geräte-URI (hier die IP des Druckers mit
Raw-Port 9100), und -m raw heißt: kein Treiber, kein
Filter. Für einen USB-Drucker zuerst mit lpinfo -v die URI
ermitteln und die usb://…-Zeile verwenden.
Neuere CUPS-Versionen geben für Raw-Queues eine Deprecation-Warnung aus. Sie funktionieren weiterhin; die Warnung betrifft die künftige Richtung von CUPS, und die Direkt-Socket-Alternative unten hängt gar nicht von CUPS ab.
lp -d zebra-raw etikett.zpl
Müssen Sie eine bestehende Queue mit Treiber verwenden, geht
Durchreichen pro Auftrag: lp -d zebra -o raw etikett.zpl —
eine eigene Raw-Queue ist aber schwerer falsch zu benutzen.
Die Druckerdialoge der Systemeinstellungen wollen einen Treiber oder
AirPrint wählen — beides ist für Dokumente gedacht, nicht für rohes
ZPL; legen Sie die Queue deshalb im Terminal mit lpadmin
an. Wer eine Browser-Oberfläche mag: Das CUPS-Webinterface ist
standardmäßig aus, cupsctl WebInterface=yes schaltet es
ein, dann localhost:631 öffnen.
lpstat -p listet Queues und Zustand,
lpstat -o wartende Aufträge, cancel -a räumt
auf. Ein Auftrag mit Status "completed" heißt nur: CUPS hat die Bytes
übergeben — wie bei Port 9100 selbst ist das kein Beweis für ein korrekt
gedrucktes Etikett. Vor dem Senden das ZPL in den
Online-Viewer einfügen: Papier kennt
kein Zurück.
Für einen einmaligen Auftrag ist das direkte Senden an TCP-Port 9100 einfacher — keine Queue zu konfigurieren; siehe ZPL an einen Netzwerkdrucker senden. Was CUPS beisteuert, ist Spooling: benannte Queues, Reihenfolge, Wiederholungen, Berechtigungen. Teilen sich mehrere Personen oder Systeme einen Drucker, lohnt sich diese Schicht. Zur größeren Treiberfrage — alle drei rohen Wege und wann ein echter Treiber hilft — siehe ZPL ohne Treiber drucken.
Werden Ihre Etiketten in Labelixa erzeugt oder gespeichert, ist der DirectPrint-Agent das fertige lokale Hilfsprogramm: ein kleines Programm auf einem Rechner im Netz des Druckers, das Druckaufträge von der API abholt und an den Drucker übergibt — über das Netzwerk oder über die Druckwarteschlange eines USB-Druckers. Es öffnet keinen eingehenden Port. Download und Einrichtung: /de/download
ZPL aus der Cloud auf einem USB-Zebra-Drucker drucken
Weil an der CUPS-Queue ein Treiber oder Filter hängt, der den ZPL-Quelltext als Dokument behandelt. Die Queue raw anlegen (lpadmin mit -m raw) oder pro Auftrag -o raw übergeben; im ZPL selbst lässt sich eine Queue-Einstellung nicht beheben.
Nein. Die Firmware des Druckers rendert ZPL selbst; die Queue muss die Bytes nur unangetastet durchreichen — genau das tut eine Raw-Queue in CUPS. Ein Treiber übersetzt Dokumente, und ein ZPL-Auftrag ist per Definition keines.
Raw-Queues funktionieren weiterhin; die Warnung betrifft die künftige Richtung von CUPS. Sollte es je ein Problem werden: Direktes Senden an TCP-Port 9100 hängt gar nicht von CUPS ab und erreicht dasselbe Durchreichen.
Ein USB-Etikettendrucker hat keinen Port 9100. Wie die Druckwarteschlange rohes ZPL transportiert und der Labelixa-Agent sie mit der Cloud-API verbindet.
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.
Warum wurde mein Etikett auf dem falschen Drucker gedruckt?Etiketten auf dem falschen Drucker sind kein Pech, sondern ein Identitätsproblem: Warteschlangennamen, DHCP-Leases, geteilte Treiber. Diagnose und Vorbeugung.
ZPL ohne Druckertreiber druckenWarum ZPL keinen Treiber braucht, drei rohe Sendewege — Socket, CUPS-Raw-Queue, Windows Generic/Text Only — und wann ein echter Treiber wirklich hilft.