Barcodes drucken

Die häufigste Ursache für „mein Barcode scannt nicht“ ist nicht die Codierung – die Striche sind zu klein. Der schmalste Strich (1D) oder ein Modul (2D) – die X-Dimension – muss breit genug sein, damit die Optik des Scanners ihn auflösen kann. Wenn Merkmale unter diese Schwelle schrumpfen, brechen die Leseraten drastisch ein.

Die meisten Symbologie-Spezifikationen überlassen die X-Dimension der Anwendung. Die folgenden Werte sind praktische Empfehlungen für die typische pyStrich-Druckkette: ein handelsüblicher Laserdrucker (300-600 DPI) plus entweder ein günstiger Handscanner oder eine moderne Handykamera. Erhöhen Sie die X-Dimension, wenn eines der beiden Enden dieser Kette schwächer ist – abgenutzte Farbbänder, verschwommene Kameras, Scans aus der Entfernung – oder wenn die bedruckte Oberfläche reflektierend oder gewölbt ist.

Symbologie

X-Dimension

Anmerkungen

Code 39

0,19 - 0,50 mm

0,25 mm ist eine sichere Vorgabe für die industrielle Kennzeichnung.

Code 128

0,19 - 0,50 mm

0,25 mm wird von den meisten stationären und Handscannern zuverlässig gelesen.

EAN-13 (Einzelhandel)

0,26 - 0,66 mm

GS1 gibt ein nominales X von 0,33 mm an (100 % Vergrößerung); das Scannen im Einzelhandel erlaubt typischerweise 80 %-200 % des Nominalwerts.

Data Matrix

0,25 - 0,50 mm

~0,3 mm ist die übliche praktische Untergrenze für Handheld-Imager.

QR-Code

0,25 - 0,50 mm

Handykameras benötigen typischerweise >=0,4 mm aus etwa einer Armlänge Entfernung.

PDF417

0,25 - 0,50 mm

Die Zeilenhöhe muss >=3x der X-Dimension betragen (pyStrich-Vorgabe).

Aztec-Code

0,38 - 0,76 mm

Zuverlässigster Bereich; kleiner funktioniert mit guten Imagern, aber Handykamera-Lesungen verschlechtern sich unterhalb von ~0,4 mm schnell.

Zur Druckqualitätsprüfung siehe ISO/IEC 15415 (2D) oder ISO/IEC 15416 (1D); für Anwendungen im Handel und in der Lieferkette folgen Sie den GS1 General Specifications.

Tipp

Greifen Sie zu SVG oder EPS, sofern Ihre Werkzeugkette sie unterstützt. Vektorausgabe skaliert verlustfrei, sodass Sie das Symbol beim Layout dimensionieren, statt eine physische Größe beim Codieren festzulegen.

Vektorausgabe (SVG / EPS)

Bei SVG und EPS bestimmt pyStrich die Druckgröße überhaupt nicht. Die Ausgabe ist auflösungsunabhängig – wählen Sie eine beliebige bar_width (oder cellsize) und lassen Sie das verarbeitende Layout-Werkzeug auf die benötigte X-Dimension skalieren:

  • SVG: width und height in HTML / CSS setzen oder über die viewBox in Ihrem Design-Werkzeug.

  • EPS: zur Einbindungszeit skalieren – \includegraphics[width=40mm]{...} in LaTeX oder über die Platzierungsgröße in Illustrator / InDesign.

Die EPS-bar_width ist in PostScript-Punkten (1 pt = 1/72 Zoll ≈ 0,353 mm), sodass die Vorgabe bereits eine physisch sinnvolle Größe erzeugt, wenn Sie sie beim Einbinden nicht überschreiben.

Tipp

Für PDF-Ausgabe betten Sie das SVG in eine HTML-Vorlage ein und rendern mit WeasyPrint. Das ist ein sauberer Weg zu Etikettenbögen mit mehreren Nutzen, Lieferscheinen und ähnlichen druckfertigen Dokumenten.

Rasterausgabe (PNG)

PNG ist das einzige Ausgabeformat, bei dem bar_width / cellsize die Druckgröße festlegt, weil Rasterbilder nicht verlustfrei skalieren. Ausgehend von einer Ziel-X-Dimension und der Drucker-DPI:

bar_width (px) = X-dimension (mm) * DPI / 25.4

Bei 300 DPI erfordert eine X-Dimension von 0,25 mm bar_width=3 (aufgerundet von 2,95). Bei 600 DPI erfordert dieselbe X-Dimension bar_width=6.

Immer aufrunden auf das nächste ganzzahlige Pixel; Abrunden drückt die X-Dimension unter die lesbare Grenze.

Farben

Symbole sind standardmäßig schwarz auf weiß. Übergeben Sie dark_hex und light_hex – jeweils eine 3-, 6- oder 8-stellige Hex-Farbe – an eine beliebige Render-Methode, um die Module (oder Striche) und den Hintergrund konsistent über PNG, SVG und EPS hinweg umzufärben. Die Striche und jegliche Klarschrift nehmen dark_hex an.

Scanner werten die Luminanz gegen einen Schwellwert aus, halten Sie daher dark_hex und light_hex in der Helligkeit deutlich getrennt; ein kontrastarmes Paar untergräbt die Lesezuverlässigkeit genauso wie eine zu kleine X-Dimension. Das dezente Marineblau auf Hellgrau unten bleibt gut lesbar.

from pystrich.qrcode import QRCodeEncoder

QRCodeEncoder("https://github.com/mmulqueen/pyStrich").save_svg(
    "qrcode-navy.svg", dark_hex="#1b3a5c", light_hex="#e8e8e8"
)
QR-Code mit tiefmarineblauen Modulen auf hellgrauem Hintergrund.

Ruhezonen

Jede Symbologie benötigt Weißraum (die Ruhezone) um das Symbol, damit Scanner seine Grenzen finden können. pyStrich gibt automatisch eine Ruhezone aus; schneiden Sie nicht in den weißen Rand hinein, wenn Sie die Ausgabe in ein anderes Bild montieren.

Symbologie

Von pyStrich angewendete Ruhezone

Code 39

10x bar_width auf jeder Seite.

Code 128

10x bar_width auf jeder Seite.

EAN-13

11x bar_width links, 7x rechts (von GS1 vorgeschrieben).

Data Matrix

Konfigurierbar über quiet_zone (Vorgabe 2 Module, Spezifikationsminimum 1 Modul).

QR-Code

4 Module auf jeder Seite (von der Spezifikation vorgeschrieben).

PDF417

Konfigurierbar über quiet_zone (Vorgabe 2 Module, Spezifikationsminimum 2 Module auf jeder Seite).

Aztec-Code

Konfigurierbar über quiet_zone (Vorgabe 2 Module; die Spezifikation verlangt keine Ruhezone).

Schadenstoleranz

2D-Barcodes vertragen dank ihrer Reed-Solomon-Fehlerkorrektur ein gewisses Maß an physischen und umweltbedingten Schäden – Abrieb, Verschmieren, Markierungen, teilweise Verdeckung. Diese Toleranz lässt sich verbessern, indem man die Fehlerkorrekturstufe erhöht, die Druckabmessungen vergrößert und den Barcode von den Rändern des Etiketts oder Dokuments fernhält (die am meisten Verschleiß abbekommen). Geeignete Medien und geeigneter Druck sind unerlässlich.

Für raue Umgebungen: Wenn die codierten Daten eine vorhersehbare Länge und einen vorhersehbaren Zeichensatz haben, erhöhen Sie die Fehlerkorrekturstufe so hoch, wie es der verfügbare Etiketten- oder Dokumentenplatz bei einer sinnvollen Modulgröße zulässt.

Die Fehlerkorrektur schützt nur den Datenbereich: Die festen Muster des Symbols (Suchmuster, L-Begrenzung oder Bullseye) müssen erkennbar bleiben, damit der Decoder überhaupt darauf einrasten kann.

Die folgenden Beispiele überstehen jeweils einen dramatischen diagonalen Fleck, der abseits dieser festen Muster platziert ist.

Aztec (ecc=50)

Data Matrix

QR-Code (ecl="H")

Aztec-Code mit einem diagonalen Fleck über der unteren rechten Ecke; weiterhin lesbar. Data-Matrix-Symbol mit einem diagonalen Fleck über dem Inneren; weiterhin lesbar. QR-Code mit einem diagonalen Fleck über der Mitte, abseits der Ecksuchmuster; weiterhin lesbar.

Überprüfung

Wenn sich ein gedruckter Barcode nicht zuverlässig scannen lässt:

  1. Versuchen Sie zuerst, ihn auf dem Bildschirm zu scannen. Scheitert er auf dem Bildschirm, sind Codierung oder Dimensionierung falsch; gelingt er auf dem Bildschirm, scheitert aber im Druck, liegt das Problem am Druckprozess.

  2. Messen Sie die X-Dimension mit einem Lineal oder einer Lupe und prüfen Sie, dass die Ruhezone intakt ist – nicht beschnitten, nicht auf einen farbigen Hintergrund gedruckt.

  3. Prüfen Sie den Druckkontrast – Thermodrucker mit niedriger DPI oder abgenutzte Farbbänder können Striche erzeugen, die zu grau sind, um gelesen zu werden.

Für Produktionseinsätze, die Barcodes in großem Maßstab drucken, ziehen Sie einen Druckqualitätsprüfer in Betracht (ein Instrument, das Symbole gegen ISO/IEC 15415 / 15416 bewertet). Eine einmal bestandene Bewertung während der Integration ist mehr wert als das Neudrucken von tausend fehlgeschlagenen Etiketten.