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.
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.
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.
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.
ZPL in Bild oder PDF wandeln, anzeigen, und der Bediener druckt über den normalen Treiber. Keine Sockets.
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.
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
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.
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).
Raw-Warteschlange in CUPS mit lpadmin einrichten, ZPL mit lp senden — und die Falle vermeiden, dass eine filternde Queue den ZPL-Code als Text druckt.
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.
ZPL aus der Cloud auf einem USB-Zebra-Drucker druckenEin USB-Etikettendrucker hat keinen Port 9100. Wie die Druckwarteschlange rohes ZPL transportiert und der Labelixa-Agent sie mit der Cloud-API verbindet.
ZPL direkt an einen Netzwerkdrucker sendenZebra-Netzwerkdrucker nehmen rohes ZPL auf TCP-Port 9100 an. Senden von Windows, macOS, Linux oder aus Code — und was zu prüfen ist, wenn nichts gedruckt wird.