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:
widthundheightin HTML / CSS setzen oder über dieviewBoxin 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"
)
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 |
Code 128 |
10x |
EAN-13 |
11x |
Data Matrix |
Konfigurierbar über |
QR-Code |
4 Module auf jeder Seite (von der Spezifikation vorgeschrieben). |
PDF417 |
Konfigurierbar über |
Aztec-Code |
Konfigurierbar über |
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 ( |
Data Matrix |
QR-Code ( |
|---|---|---|
|
|
|
Überprüfung¶
Wenn sich ein gedruckter Barcode nicht zuverlässig scannen lässt:
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.
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.
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.