zplCore.comzplCore.com

07GS1

Alle GS1-Symbologien laufen durch einen gemeinsamen Parser und Validator (portiert aus BWIPPs gs1process, Tabelle mit 534 Application Identifiern): Länge, Zeichensatz, Prüfziffern, Datumsangaben und Pflicht-/Ausschluss-Kombinationen. Eingabe in Klammerform (01)…(10)… oder roh mit FNC1/GS.

Online ausprobieren auf zplCloud.com: GS1-128 · GS1 DataMatrix · GS1 QR-Code · GS1 DataBar · Barcode prüfen

Mehr dazu auf zplCloud.com: Guide: GS1-AI-Datenbank · Vorlage: SSCC-Palettenlabel (GS1-128)

Empfohlen für GS1-128: die Daten in Klammerschreibweise (01)09521234543213(10)LOT42 angeben – im Label-Modell mit BarcodeItem.Symbology = Symbology.Gs1_128 oder per Ausdruck GS1("01", [Gtin], "10", [Lot]) gebaut und geprüft. Die FNC1-Trenner nach AIs variabler Länge werden automatisch gesetzt, der Barcode druckt als natives ^BC; FNC1 (>8) nicht von Hand setzen (Label.Validate() meldet es).

// GS1-128: AIs in Klammern; FNC1 und Trennzeichen setzt der Encoder, die AIs werden geprüft
var gs1 = new Barcode { Symbology = Symbology.Gs1_128, Code = "(01)09521234543213(17)261231(10)LOT42", Dpi = 203, BarWidth = 2, BarHeight = 70 };
var sscc = new Barcode { Symbology = Symbology.Sscc18, Code = "09501234567890123", Dpi = 203, BarWidth = 2, BarHeight = 70 }; // Prüfziffer ergänzt
var ean14 = new Barcode { Symbology = Symbology.Ean14, Code = "(01)04601234567893", Dpi = 203, BarWidth = 2, BarHeight = 70 };
var dm = new Barcode { Symbology = Symbology.Gs1DataMatrix, Code = "(01)09521234543213(21)SN12345", Dpi = 203, BarWidth = 5 };

// Composite: "linearer Teil|(AI)2D-Teil" – CC-A/B/C wird automatisch gewählt
var cc = new Barcode { Symbology = Symbology.Ean13Composite, Code = "2112345678900|(99)1234-abcd", Dpi = 203, BarWidth = 2, BarHeight = 60 };

try
{
    new Barcode { Symbology = Symbology.Gs1_128, Code = "(01)09521234543213(17)261301" }.ToPng();
}
catch (FormatException ex)
{
    Console.WriteLine(ex.Message);   // ungültiges Datum in AI 17 (Monat 13)
}

GS1-128

GS1-128 (01)(17)(10) – gerendert mit zplCore.com

SSCC-18

SSCC-18 (AI 00)

EAN-14

EAN-14 (AI 01)

GS1 Data Matrix

GS1 Data Matrix

EAN-13 Composite (CC-A)

EAN-13 Composite – gerendert mit zplCore.com

DataBar Expanded Composite

DataBar Expanded Composite

GS1-128 Composite (CC-C)

GS1-128 Composite – gerendert mit zplCore.com
Composite-Daten: "linearer Teil|(AI)…". Unterstützt für EAN-13/8, UPC-A/E, GS1-128 und alle DataBar-Varianten; CC-A, CC-B bzw. CC-C (nur GS1-128) wird nach Datenmenge gewählt. Beim Kodieren führen ungültige Daten zu einer FormatException mit AI und Grund.

Parser & Validator direkt nutzen

Gs1.Parse, ParseBracketed, ParseRaw, Validate, ToElementString, ToRaw und NeedsSeparator sind öffentlich; das Ergebnis ist ein Gs1Result mit Elements und Errors. Für QR gibt es außerdem QrExtras.Gs1, SwissQr (Matrix plus Kreuzgeometrie) und Epc.

Gs1Result r = Gs1.Parse("(01)09521234543213(17)261301(10)LOT42");   // Klammerform oder roh mit GS
foreach (Gs1Element e in r.Elements)
    Console.WriteLine($"AI {e.Ai} = {e.Value}");
if (!r.IsValid)
    foreach (Gs1Error err in r.Errors)
        Console.WriteLine(err);              // "AI 17: Invalid month" (err.Ai, err.Code, err.Message)

var ok = Gs1.Parse("(01)09521234543213(10)LOT42(17)261231");
string raw = Gs1.ToRaw(ok.Elements);         // "0109521234543213" + "10LOT42" + GS + "17261231"
string text = Gs1.ToElementString(ok.Elements);
List<Gs1Error> errors = Gs1.Validate(ok.Elements, lintReqs: true);   // inkl. Pflicht-Kombinationen
bool gs = Gs1.NeedsSeparator("10");          // true: variable Länge → FNC1/GS danach