Veröffentlicht:
Ein Etikettendrucker unter Linux, der monatelang funktioniert hat, druckt plötzlich vergrößerten und abgeschnittenen Inhalt, schiebt leere Etiketten aus oder macht aus dem Barcode einen schwarzen Block — und geändert hat sich nur ein Systemupdate. Im Oktober 2026 landeten mehrere solcher Meldungen im Issue-Tracker von OpenPrinting. Gemeinsam ist ihnen: Das Etikett wurde nicht als Druckersprache gesendet. Es lief durch eine Treiber-Queue, die ein PDF für den Drucker in ein Bild umwandelt, und eine Änderung irgendwo in dieser Umwandlung hat das Etikett verändert.
Wir haben das nicht an einem Drucker nachgestellt. Die Liste gibt wieder, was in den Issues steht, nicht mehr; Links unter Quellen.
Drucken Sie ein Etikett aus einem Layoutprogramm oder dem Browser, übergibt die Anwendung CUPS ein Dokument, meist ein PDF. Eine Treiber-Queue führt dann eine Filterkette aus: Seitengröße und Skalierung, Rasterung und zuletzt die Umsetzung der Bitmap in die Befehle des Druckers. Jeder Schritt kann Größe, Position oder Pixel verändern, und jeder Schritt ist eine Systembibliothek — libcupsfilters, Ghostscript, Poppler, pdfio —, die mit Ihrer Distribution aktualisiert wird. Ihre Etikettdatei hat sich nicht geändert, die Umwandlung schon. Ein Raster-Treiber muss außerdem die echte Auflösung des Druckkopfs kennen: Bei 300 dpi für einen 203-dpi-Drucker wird alles um etwa 1,48 skaliert.
Müssen Sie beim Treiber-Workflow bleiben, zeigen die Meldungen, was den Meldern half: zurück zur vorherigen libcupsfilters-Version oder auf einen Build mit der Korrektur (#300). Der Paketmanager Ihrer Distribution zeigt, welche Bibliotheken sich im fraglichen Update geändert haben. Das ist eine Notlösung: Das nächste Update kann dieselbe Kette wieder verschieben.
Kann Ihr System das Etikett als ZPL oder TSPL erzeugen — Versandplattformen, WMS und ERP-Systeme können das meist, eine Vorlage ebenso —, umgehen Sie die Umwandlungskette. Eine Raw-Queue reicht die Bytes unverändert an den Drucker: keine Skalierung, keine Rasterung, nichts, was ein Bibliotheksupdate verändern könnte.
sudo lpadmin -p etikett-raw -E -v socket://192.168.1.50:9100 -m raw
lp -d etikett-raw etikett.zpl
Das CUPS-Handbuch zu lpadmin sagt, das Modell
raw „entfernt eine vorhandene PPD-Datei". Dasselbe Handbuch
sagt auch, dass andere Modelle als everywhere veraltet sind und
Druckertreiber in einer künftigen CUPS-Version nicht mehr unterstützt
werden — deshalb warnen neuere CUPS-Versionen beim Anlegen einer Raw-Queue.
Heute funktioniert sie noch. USB-Geräte-URIs und macOS-Details stehen in
ZPL unter macOS und Linux
drucken.
Gelegentlich wird lp -o raw empfohlen, um eine Datei durch
eine bestehende Treiber-Queue zu schicken. Das aktuelle
lp-Handbuch dokumentiert diese Option nicht, deshalb bauen wir
hier nicht darauf; eine eigene Raw-Queue ist der berechenbare Weg.
Die Richtung von CUPS ist treiberloser Druck mit IPP Everywhere. Etikettendrucker sprechen IPP selten selbst; Michael Sweets LPrint ist eine Druckeranwendung, die jeden Drucker als IPP-Everywhere-Druckdienst anbietet. Die Projektseite nennt alle EPL2- und ZPL-Drucker von Zebra, experimentelle TSPL/TSPL2-Unterstützung, DYMO, Brother und weitere und sagt, dass jeder Drucker „raw", Apple/PWG Raster und PNG direkt drucken kann. Eine Grenze: Der Maintainer merkt an, dass LPrint und IPP allgemein keine Medien unbestimmter Länge kennen — der Client muss eine Seitengröße angeben.
Fügen Sie das ZPL in den Online-Viewer ein, um Größe und Barcode vor dem Druck zu prüfen. Wurde das Etikett für einen 203-dpi-Drucker erstellt und Ihrer hat 300 dpi (oder umgekehrt), skalieren Sie die Koordinaten mit dem DPI-Konverter, statt einen Treiber eine Bitmap skalieren zu lassen; Hintergrund in ZPL-Punkte, mm und DPI. Druckt der Drucker Ihren ZPL-Quelltext als Text, ist es das umgekehrte Problem — siehe ZPL ohne Treiber drucken.
Das Etikett läuft vermutlich durch eine Treiber-Queue, die ein PDF in ein Bild umwandelt, und eine Bibliothek dieser Kette hat sich geändert. Eine Meldung vom Oktober 2026 zu einem Zebra ZD220 sah mit libcupsfilters-2.2.1-Snapshots etwa 2,5-fach zu großen Inhalt, mit 2.1.1 korrekt.
Senden Sie das Etikett als Druckersprache (ZPL oder TSPL) an eine Raw-Queue, etwa lpadmin -p etikett-raw -E -v socket://IP:9100 -m raw. Eine Raw-Queue reicht die Bytes unverändert durch; es gibt keine Skalierung oder Rasterung, die ein Update ändern könnte.
Das lpadmin-Handbuch sagt, dass andere Modelle als everywhere veraltet sind und Druckertreiber in einer künftigen CUPS-Version nicht mehr unterstützt werden. Raw-Queues funktionieren heute noch; LPrint, das Etikettendrucker als IPP-Everywhere-Dienste anbietet, ist der Weg nach vorn.
BLE oder Bluetooth Classic, was Web Bluetooth erreicht (Android-Chrome ja, iPhone-Safari nein), TSPL in Stücken schreiben und ein geprüftes Beispiel.
ZPL unter macOS und Linux über eine CUPS-Raw-Queue druckenRaw-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 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 aus dem Browser druckenEin Browser kann keinen Socket zu Port 9100 öffnen. Die drei Muster, die ZPL aus einer Web-App wirklich ausliefern, und ihr Preis.