Ratgeber › ZPL direkt an einen Netzwerkdrucker senden

ZPL direkt an einen Netzwerkdrucker senden

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.

Vor dem Senden: das Etikett ansehen

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.

Linux und macOS

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.

Windows

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.

Aus Code

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.

Wenn nichts gedruckt wird

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.

Häufig gestellte Fragen

Welchen Port nutzen Zebra-Drucker für Raw-Druck?

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.

Brauche ich einen Druckertreiber, um ZPL zu senden?

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.

Der Socket sendete fehlerfrei — warum wurde nichts gedruckt?

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.

Verwandte Ratgeber

Was ist ZPL?

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 ansehen

Eine ZPL-Datei ist nur Text — das Etikett existiert erst, wenn etwas es zeichnet. Drei praktische Wege, ein ZPL-Etikett vor dem Drucker zu sehen.

Eigenen ZPL-Code testen →