Veröffentlicht:
Eine ZPL-Datei braucht zum Drucken keinen Treiber. Die meisten netzwerkfähigen Thermodrucker lauschen auf TCP-Port 9100 ("Raw"- oder "JetDirect"-Druck) und behandeln alles, was dort ankommt, als Druckerbefehle. Ein Etikett zu senden heißt also nur, Bytes zu einem Socket zu bewegen — von jedem Betriebssystem aus, ohne Installation.
Port 9100 kennt kein Zurück. Der Drucker bewegt Material, sobald der
Auftrag ankommt; jeder Fehler kostet ein Etikett und ein Stück Farbband.
Das ZPL zuerst in den Online-Viewer
einfügen: Sie sehen das gerenderte Etikett und strukturelle Probleme
(fehlendes ^FS, Felder außerhalb des Etiketts), bevor der
Drucker sie sieht.
Das klassische Werkzeug ist nc (netcat). Die IP durch
die Adresse Ihres Druckers ersetzen:
nc 192.168.1.50 9100 < etikett.zpl
Auf Systemen mit CUPS geht auch lp mit einer
Raw-Warteschlange; für Ad-hoc-Aufträge ist der Socket einfacher — es
gibt nichts zu konfigurieren.
PowerShell öffnet denselben Socket ohne Zusatzwerkzeuge:
$c = New-Object Net.Sockets.TcpClient('192.168.1.50', 9100)
$b = [IO.File]::ReadAllBytes('etikett.zpl')
$c.GetStream().Write($b, 0, $b.Length); $c.Close()
Die alten Tricks (Drucker freigeben und copy /b)
funktionieren noch, aber der Socket-Weg braucht weder Freigabe noch
Treiber.
Jede Sprache mit TCP-Sockets kann drucken. Python:
import socket
with socket.create_connection(("192.168.1.50", 9100), timeout=5) as s:
with open("etikett.zpl", "rb") as f:
s.sendall(f.read())
Im einfachen Fall gibt es auf 9100 kein Antwortprotokoll: Schließt der Socket ohne Fehler, hat der Drucker die Bytes ANGENOMMEN — das heißt nicht, dass das Etikett korrekt GEDRUCKT wurde. Dichte-Konflikte und Layoutfehler bleiben hier unsichtbar; deshalb zählt der Vorschau-Schritt oben.
Der Reihe nach — diese Liste deckt die meisten echten Fälle ab:
1. Ist der Drucker überhaupt erreichbar? Die IP
pingen; schlägt das fehl, ist es ein Netzwerkproblem, kein
ZPL-Problem.
2. Ist Port 9100 offen? Manche Drucker kommen mit deaktiviertem
Raw-Druck oder anderem Port — die Netzwerk-Konfigurationsseite des
Druckers ist die Autorität.
3. Ist der Drucker pausiert oder im Fehlerzustand? Eine blinkende
Statusleuchte heißt: Der Auftrag wartet im Drucker, er ist nicht
verloren.
4. Ist das ZPL wirklich ein Etikett? Alles muss zwischen
^XA und ^XZ stehen; eine Datei ohne diesen
Rahmen wird stillschweigend ignoriert — die häufigste Ursache für "es
passiert nichts".
5. Es druckt, aber falsch? Das ist eine andere Fehlerklasse:
siehe warum ein
ZPL-Etikett falsch gedruckt wird.
Im Normalfall TCP 9100 — alles, was dort ankommt, wird als Druckerbefehl behandelt. Manche Drucker kommen mit deaktiviertem Raw-Druck oder anderem Port; die Netzwerk-Konfigurationsseite des Druckers ist die Autorität.
Nein. Raw-Druck heißt, Bytes zu einem Socket zu bewegen: nc auf Linux/macOS, ein kurzes PowerShell-Snippet auf Windows oder der TCP-Socket jeder Programmiersprache.
Port 9100 gibt kein Feedback: Ein angenommener Auftrag ist kein gedrucktes Etikett. Pause-/Fehlerzustand des Druckers prüfen und sicherstellen, dass das ZPL zwischen ^XA und ^XZ steht — eine Datei ohne diesen Rahmen wird ignoriert.
ZPL ist die Sprache der Zebra-Thermodrucker. Wie die Befehle zu lesen sind, wie ein Etikett aufgebaut wird und welche Fehler am häufigsten vorkommen.
Welche Barcode-Symbologie soll ich wählen?EAN-13, Code 128 oder QR? Praktische Regeln für die Wahl des Barcodes nach Daten, Platz und Lesegerät.
ZPL-Datei ohne Drucker in der Vorschau ansehenEine ZPL-Datei ist nur Text — das Etikett existiert erst, wenn etwas es zeichnet. Drei praktische Wege, ein ZPL-Etikett vor dem Drucker zu sehen.