Anmelden
Produkte
ZPL-ViewerBarcode-GeneratorBild → ZPLZPL-SpickzettelEtiketten-DesignerVorlagen-Galerie
Entwickler
API-SchnellstartAPI-ReferenzMCP-ServerMassenerzeugungWebhooksSDKs & BeispieleLimitsDirectPrint-Agent NeuGitHub ActionVS-Code-ErweiterungOn-Premise
Lösungen
Logistik und VersandE-CommerceERP & WMSProduktionEinzelhandelGesundheitswesen und LaborAlle Lösungen
Tools
ZPL-DiagnosezentrumZPL-DebuggerGrößen- und DPI-AnalyseDPI-KonverterBarcode-PlatzrechnerVersandetiketten-AnalyseSchriftprüfungAusrichtungs-DebuggerKalibrierungsassistentDruckerkompatibilitätsprüfungBarcode-LesbarkeitsprüfungDruckersprachen-ErkennungThermodrucker-TestpaketZPL-ToolsEPL-ToolsTSPL-ToolsCPCL-ToolsDruckersprachen-KonverterAlle WerkzeugeRatgeberPreise
Sprache
EnglishTürkçeDeutsch
Startseite›Ratgeber›TSPL vom Smartphone oder Browser auf einem Bluetooth-Etikettendrucker drucken

TSPL vom Smartphone oder Browser auf einem Bluetooth-Etikettendrucker drucken

Veröffentlicht:

Viele günstige 4×6- und kleine Etikettendrucker sprechen TSPL und haben Bluetooth an Bord. Aus einer Web-App oder vom Smartphone darauf zu drucken funktioniert — Leute tun es aus Android-Chrome mit ein paar Dutzend Zeilen JavaScript —, aber nur, wenn Sie zuerst wissen, welches Bluetooth der Drucker spricht, und nur in Browsern, die Web Bluetooth implementieren.

Zwei Arten von Bluetooth

Bluetooth-Low-Energy-Geräte (BLE) stellen Daten über GATT bereit: Services mit Characteristics, die man liest, schreibt oder abonniert. Ein BLE-Etikettendrucker hat typischerweise eine Characteristic, die die Druckdaten annimmt. Bluetooth-Classic-Drucker bieten meist ein Serial Port Profile (SPP): einen Bytestrom wie ein Kabel. Welches Sie haben, verraten Datenblatt oder Kopplungsverhalten; manche Drucker bieten beides.

Diese Unterscheidung entscheidet, was eine Webseite kann. Die Web Bluetooth API verbindet sich über GATT mit BLE-Geräten. Für Classic-Geräte verweist Chromes eigene Dokumentation auf die Web Serial API, die in Chrome 117 auf dem Desktop RFCOMM-Dienste wie SPP auf gekoppelten Geräten unterstützt.

Welche Browser es können

Web Bluetooth ist als experimentell markiert und nicht Baseline. Es gibt es in Chrome (Desktop und Android), Edge, Opera und Samsung Internet. Safari unter macOS und iOS sowie Firefox unterstützen es nicht. Auf iPhone und iPad gibt es in Safari keinen unterstützten Weg; Drittanbieter-Browser mit eigener Bluetooth-Brücke existieren, und eine der Meldungen unten nutzte einen, aber das ist nicht Teil von WebKit. Die API funktioniert nur über HTTPS (sicherer Kontext), und requestDevice() muss aus einer Nutzeraktion wie einem Tippen auf einen Button aufgerufen werden — Sie brauchen also einen Button „Drucker verbinden".

Der allgemeine Ablauf

1. Den Nutzer den Drucker wählen lassen und den verwendeten Service angeben. 2. Verbinden und eine Characteristic suchen, deren Eigenschaften Schreiben erlauben. 3. Den TSPL-Auftrag in kleinen Stücken senden.

// SERVICE_UUID: aus der Druckerdokumentation oder einer BLE-Scanner-App
const device = await navigator.bluetooth.requestDevice({
  acceptAllDevices: true,
  optionalServices: [SERVICE_UUID],
});
const server = await device.gatt.connect();
const service = await server.getPrimaryService(SERVICE_UUID);
const chars = await service.getCharacteristics();
const out = chars.find(
  (c) => c.properties.writeWithoutResponse || c.properties.write);

const bytes = new TextEncoder().encode(tsplJob);
const CHUNK = 180;
for (let i = 0; i < bytes.length; i += CHUNK) {
  const part = bytes.slice(i, i + CHUNK);
  if (out.properties.writeWithoutResponse) {
    await out.writeValueWithoutResponse(part);
  } else {
    await out.writeValueWithResponse(part);
  }
}

Warum Stücke. Die Web-Bluetooth-Spezifikation weist jeden einzelnen Schreibvorgang über 512 Byte ab, und die nutzbare Größe pro Schreibvorgang bestimmt die ausgehandelte MTU der Verbindung — der Browser handelt sie aus, die Seite sieht sie nicht. Ein Etikettauftrag, besonders mit BITMAP, ist viel länger und geht deshalb in Stücken hinaus. Eine Meldung zu einem 4×6-BLE-Drucker sendete 179-Byte-Stücke mit writeValueWithoutResponse und 8 ms Pause verlustfrei; nehmen Sie solche Zahlen als Startpunkt für Ihr Gerät, nicht als Konstante.

Die UUIDs gehören dem Drucker, nicht uns. Service- und Characteristic-IDs unterscheiden sich zwischen Herstellern und sogar Modellen — die Meldungen unten zeigen verschiedene Kurz-IDs auf verschiedenen Druckern —, und wir listen sie hier nicht. Lesen Sie sie aus der Herstellerdokumentation oder mit einer BLE-Scanner-App. Ein Melder stellte fest, dass optionalServices nur mit der vollen 128-Bit-UUID funktionierte.

Ein minimaler TSPL-Auftrag

Ein 50 × 30 mm Etikett mit einer Textzeile und einem Code-128-Barcode für einen 203-dpi-Drucker (8 Punkte pro mm):

SIZE 50 mm, 30 mm
GAP 2 mm, 0 mm
CLS
TEXT 40,24,"3",0,1,1,"BOX 42"
BARCODE 40,80,"128",80,1,0,2,2,"12345678"
PRINT 1

SIZE und GAP beschreiben das Etikettenmaterial in echten Einheiten, CLS leert den Bildpuffer, TEXT und BARCODE setzen Inhalte in Punkten ab der linken oberen Ecke, PRINT 1 druckt ein Exemplar. Dieser Auftrag besteht den TSPL-Validator ohne Befund und passt im TSPL-Viewer aufs Etikett; fügen Sie Ihren eigenen Auftrag dort ein, bevor Sie ihn per Funk senden — ein falsches SIZE oder eine Koordinate jenseits des Rands zeigt sich am Bildschirm statt auf einem Streifen Etiketten. Befehlsdetails stehen in der TSPL-Befehlsreferenz, der breitere Vorschau-Ablauf in TSPL-Vorschau und Fehlersuche.

Verbunden, aber es druckt nichts

Prüfen Sie, dass Sie auf die Characteristic schreiben, die Druckdaten annimmt, nicht auf eine für Benachrichtigungen. Prüfen Sie, dass der Auftrag mit PRINT endet. Reagieren Drucker einer Familie auch auf eigene Taschendrucker-Befehle, gehen Sie nicht davon aus, dass TSPL Standard ist: Eine Meldung fand, dass TSPL auf derselben Characteristic sauber und kantenbündig druckte, während die Raster-Befehle des Herstellers abgeschnitten herauskamen. Ein Logo, das als schwarzes Rechteck druckt, ist ein Problem der TSPL-Bitpolarität — siehe TSPL-BITMAP druckt einen schwarzen Kasten. Für Zebra-Drucker und ZPL vom Smartphone sind die Wege andere; siehe ZPL von iPhone, iPad oder Android drucken.

Quellen

Häufig gestellte Fragen

Kann ich von einer Webseite auf einen Bluetooth-Etikettendrucker drucken?

Ja, wenn der Drucker Bluetooth Low Energy nutzt und der Browser Web Bluetooth implementiert: Chrome auf Desktop und Android, Edge, Opera und Samsung Internet. Safari auf iPhone, iPad und macOS sowie Firefox unterstützen es nicht.

Funktioniert Web Bluetooth mit Bluetooth-Classic-Druckern (SPP)?

Nein. Web Bluetooth spricht über GATT mit BLE-Geräten. Für Classic-Drucker mit serieller Schnittstelle verweist Chrome auf die Web Serial API, die in Chrome 117 auf dem Desktop RFCOMM-Dienste wie SPP auf gekoppelten Geräten unterstützt.

Warum muss ich den TSPL-Auftrag in Stücken senden?

Die Web-Bluetooth-Spezifikation weist einen einzelnen Schreibvorgang über 512 Byte ab, und die nutzbare Größe pro Schreibvorgang hängt von der MTU der Verbindung ab. Eine Meldung sendete 179-Byte-Stücke mit 8 ms Pause verlustfrei; passen Sie die Größe an Ihren Drucker an.

Verwandte Ratgeber

ZPL aus der Cloud auf einem USB-Zebra-Drucker drucken

Ein USB-Etikettendrucker hat keinen Port 9100. Wie die Druckwarteschlange rohes ZPL transportiert und der Labelixa-Agent sie mit der Cloud-API verbindet.

Etikett nach einem CUPS-Update zu groß, abgeschnitten oder leer

Nach einem Linux-Update ist das Etikett vergrößert, abgeschnitten, leer oder der Barcode ein schwarzer Block. Ursache Treiber-Queue, Lösung Raw-Queue.

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 unter macOS und Linux über eine CUPS-Raw-Queue drucken

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.

Eigenen ZPL-Code testen →