Ratgeber › ZPL aus dem Browser drucken

ZPL aus dem Browser drucken

Veröffentlicht:

Früher oder später soll eine Web-Anwendung ein Etikett auf einem Thermodrucker ausgeben, und der erste Versuch ist immer derselbe: aus JavaScript einen Socket zum Drucker öffnen. Das geht nicht — und warum es nicht geht, zeigt direkt die Muster, die funktionieren.

Warum der direkte Weg nicht funktioniert

Roher Thermodruck heißt: Bytes auf TCP-Port 9100 schreiben. Browser stellen bewusst keine API für beliebige TCP-Sockets bereit — Seiten- JavaScript spricht HTTP, WebSocket und WebRTC, und alle drei brauchen einen kooperierenden Server auf der Gegenseite. Ein Etikettendrucker auf Port 9100 ist kein solcher Server: kein HTTP, kein Handshake. Die Einschränkung ist eine Sicherheitsgrenze, kein fehlendes Feature; keine Bibliothek umgeht sie.

Muster 1 — der Server leitet weiter

Der Browser schickt das Etikett an Ihr Backend; das Backend öffnet den Socket zum Drucker und leitet die Bytes weiter. Für Lager- und Backoffice-Anwendungen ist das die Standardantwort: Drucker und Server liegen im selben Netz.

Muster 2 — ein lokaler Helfer am Arbeitsplatz

Neben dem Browser läuft ein kleines Programm, lauscht auf localhost, und die Seite schickt ihm das Etikett per HTTP; der Helfer schreibt auf Port 9100. So arbeiten die meisten "Webdruck"-Werkzeuge der Hersteller, und es ist das einzige Muster, das einen für den Server unsichtbaren Drucker erreicht.

Muster 3 — rendern und den Druckdialog des Browsers nutzen

ZPL in Bild oder PDF wandeln, anzeigen, und der Bediener druckt über den normalen Treiber. Keine Sockets.

Was Sie auch wählen: erst das Etikett ansehen

Port 9100 kennt kein Rückgängig — sobald der Auftrag ankommt, bewegt der Drucker Material. Den Auftrag vorher im Browser zu rendern kostet nichts und fängt die strukturellen Probleme ab: Felder außerhalb des Etiketts, ein fehlender Abschluss, nicht kodierbare Barcodedaten. Fügen Sie ihn in den ZPL-Viewer ein oder rufen Sie die Render-API aus demselben Backend auf, das später sendet. Die Betriebssystem-Seite der Auslieferung steht in ZPL an einen Netzwerkdrucker senden.

Häufig gestellte Fragen

Kann JavaScript ZPL direkt an einen Drucker senden?

Nein. Roher Thermodruck schreibt Bytes auf TCP-Port 9100, und Browser bieten keine API für beliebige TCP-Sockets — nur HTTP, WebSocket und WebRTC, die alle einen kooperierenden Server brauchen. Ein Drucker auf Port 9100 spricht keines davon. Das ist eine Sicherheitsgrenze; keine Bibliothek umgeht sie.

Wie drucken Web-Anwendungen dann ZPL?

Drei Muster: Das Backend leitet den Auftrag an Port 9100 weiter (Netzzugriff nötig), ein kleiner lokaler Helfer lauscht auf localhost und reicht weiter (Installation je Arbeitsplatz), oder das Etikett wird als Bild bzw. PDF gerendert und über den normalen Treiber gedruckt (ohne Installation, aber der Treiber rastert den Barcode).

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 →