18Scan-Proof: jeder Barcode zurückgelesen
Beantwortet vor dem Druck die Frage „trägt dieser Barcode die Daten, die ich schicke, und ist das Symbol sauber?“. ZplScanProof.Verify rendert das Etikett, liest jeden Barcode mit zwei unabhängigen Decodern (zxing-cpp und ZXing.Net) aus der Bitmap zurück und vergleicht mit den Felddaten nach ^FH, ^FN, ^SN, Prüfziffern und Invocation-Codes – GS1 Element für Element.
Online ausprobieren auf zplCloud.com: Barcode-Scan-Proof
Mehr dazu auf zplCloud.com: Guide: Warum dein ZPL-Barcode nicht scannt
var report = ZplScanProof.Verify(zpl, new ScanProofOptions { Dpi = 203, Robustness = true });
foreach (var s in report.Symbols) // ^BC GS1-128 Match A "00376104250021234569" X = 0,501 mm
Console.WriteLine($"{s.Command} {s.Symbology} {s.Status} {s.Grade} \"{s.DecodedData}\" X = {s.XDimensionMm:0.###} mm");
Console.WriteLine(report.LowestGrade); // schlechteste digitale Note aller Symbole
string sarif = report.ToSarif("labels/shipping.zpl"), text = report.ToText();
ZplScanProof.Verify(new ZplCore.Barcodes.Barcode { Symbology = ZplCore.Barcodes.Symbology.Ean13, Code = "950600013435" });
zplcore verify pallet.zpl --dpi 203 [--robustness] [--format text|json|sarif] [--fail-on mismatch,grade:C]
[0.1] ^BC GS1-128 line 17 at 94,800 (624×260 dots, 0°)
status: Match digital grade: A (4.0)
field data: "(00)376104250021234569"
decoded: "00376104250021234569"
zxing-cpp: read
ZXing.Net: read
X-dimension: 4 dots = 0.501 mm
quiet zones: left ≥14X (min. 10X), right ≥14X (min. 10X)
Status je Symbol
Match– gelesen = erwartet = FelddatenDataAltered– gelesen = erwartet, aber die Symbologie hat die Daten verändert (z. B. falsche Prüfziffer ersetzt)Mismatch– ein Decoder liest andere DatenNotDecoded/NotDecodable– nicht lesbar bzw. kein Decoder für die Symbologie (dann nur Strukturprüfungen)NotRendered– das Feld hat nichts gedruckt
Gemessen
- X-Dimension in Dots und mm, ganzzahlige Module, Breit/Schmal-Verhältnis
- Ruhezonen (begrenzt durch fremde Druckfarbe oder den Etikettenrand), Balkenhöhe, Abschneiden, Überlappung
- Klarschriftzeile und benachbarter Text gegen die Daten
Robustness = true: zusätzliche Simulationen (z. B. Zielauflösung 203 dpi)- SARIF 2.1.0 mit Regel-IDs
SP…wiezplcore comply
Grenzen: rein digital; Barcodes innerhalb von ^GF-Grafiken werden nicht als Barcode erkannt (dafür ZplScanProof.Verify(Barcode)); kein EPL. Lässt sich die native zxing-cpp-Bibliothek nicht laden (glibc älter als 2.38, z. B. Debian 12, oder musl/Alpine), läuft Scan-Proof nur mit ZXing.Net und meldet das als SP1004.

