zplCore.comzplCore.com

17Compliance-Pre-Check: Regelpakete als Code

Prüft Etiketten vor dem Druck gegen öffentliche Vorgaben: ZplCompliance.Check rendert das ZPL und misst die gedruckte Geometrie – X-Dimension in mm, Balkenhöhe, Ruhezonen, Klarschrift, Texthöhe, Überlappungen, abgeschnittene Symbole, GS1-AIs mit Prüfziffern und Kombinationsregeln, Digital-Link-Syntax, MaxiCode-Carrier-Nachricht. 72 Regeln in Paketen, jede mit stabiler ID, Schweregrad und Quellenangabe.

Online ausprobieren auf zplCloud.com: Label-Compliance-Check

Mehr dazu auf zplCloud.com: Guide: Warum Amazon Labels ablehnt · Vorlage: SSCC-Palettenlabel (GS1-128) · Vorlage: UDI-/HIBC-Gerätelabel

Ein Pre-Check, keine Zertifizierung. Ein leeres Ergebnis heißt: keine Regel hat ein Problem gefunden. Es ersetzt weder die Abnahme durch Carrier, Händler oder Behörde noch ein Barcode-Prüfgerät für die Druckqualität des fertigen Etiketts. Quellenstand: Oktober 2026.
Paket (--pack)InhaltQuellen
gs1-logisticSSCC in GS1-128, X-Dimension ≥ 0,495 mm, Balkenhöhe, Ruhezonen, Klarschrift ≥ 3 mm, AI-Formate und -KombinationenGS1 General Specifications 26.0, Logistic Label Guideline 1.3
sunriseSunrise 2027: GTIN in GS1 DataMatrix oder QR-Code mit GS1 Digital Link neben EAN/UPC, Modulgröße, URI-SyntaxGenSpecs 26.0, Digital Link URI Syntax 1.7.0
amazon-fba, ups, fedex, dhl-paketFormate, Pflicht-Barcodes, Ruhezonen, MaxiCode-Carrier-Nachricht, 1Z-Prüfzifferöffentliche Carrier-Dokumentation (teils als „advisory“ markiert)
udiUDI-DI (01), Produktionskennzeichen, Datumsregeln, zulässige Träger21 CFR 801, EU-MDR Anhang VI, GenSpecs 26.0
rfidschreibt ^RF die EPC der gedruckten SSCC/GTIN? (siehe RFID Studio)GS1 EPC TDS 2.3
// using ZplCore.Compliance;

var report = ZplCompliance.Check(zpl, CompliancePacks.Gs1LogisticLabel | CompliancePacks.Sunrise2027,
    new ComplianceOptions { Dpi = 203 });          // ZPL kennt keine Auflösung: dpi des Druckers angeben
foreach (var f in report.Findings)
    Console.WriteLine(f);  // label 1: ZPL3104 error (16:1): ^BC: X-dimension 0.25 mm … below the minimum 0.495 mm
File.WriteAllText("labels.sarif", report.ToSarif("labels/pallet.zpl"));   // GitHub Code Scanning
string json = report.ToJson();
List<byte[]> pngs = ZplCompliance.RenderAnnotated(zpl, report);          // Rahmen + Regel-IDs auf dem Etikett
zplcore comply pallet.zpl --pack gs1-logistic,sunrise --dpi 203 [--format text|json|sarif] [--annotate out.png]
zplcore comply --list-rules --pack all          # alle Regeln mit ID, Schweregrad und Quelle

pallet.zpl:16:1: error ZPL3104: label 1 ^BC: X-dimension 0.25 mm (2 dot(s) at 203 dpi) is below the minimum
  0.495 mm for logistic units … [GS1 General Specifications 26.0 §5.12.3.5 Table 5-51]
    fix: Use ^BY4 or wider at 203 dpi.
1 label(s) at 203 dpi, packs gs1-logistic GenSpecs 26.0 / LLG 1.3: 4 error(s), 0 warning(s), 0 info(s).
Pre-check only, not a certification.

Annotiertes Etikett

Palettenetikett mit rot markierten Befunden ZPL3104 und ZPL3110 an beiden GS1-128-Barcodes

Dasselbe Palettenetikett wie samples/compliance/gs1-logistic-sscc.zpl, aber mit ^BY2: beide GS1-128 sind zu schmal, die Klarschrift zu klein.

Ausgaben & eigene Regeln

  • Befunde mit Regel-ID, Paket, Schweregrad, Befehl, Zeile/Spalte, Bounding-Box in Dots, Quelle und Korrekturvorschlag
  • JSON, Text und SARIF 2.1.0 für GitHub Code Scanning (Regeln mit helpUri)
  • RenderAnnotated: Rahmen und Regel-IDs direkt auf dem Etikett
  • Eigene Regeln mit ComplianceRule.Create(…), eigene Pakete mit ComplianceRulePack; eingebaute Pakete mit .With(rule) / .Without("ZPL3117") anpassen
  • ComplianceOptions: Dpi, Etikettengröße ohne ^PW/^LL, FieldValues, DisabledRules, SeverityOverrides, MinimumSeverity

Grenzen: ZPL kennt keine Auflösung – alle mm-Regeln gelten für die angegebene Dpi. Nicht abgedeckt sind Druckqualitätsnoten (Kontrast, Defekte), die Position des Etiketts auf der Einheit, HIBCC-/ICCBBA-UDIs, DHL Express und die FedEx-Etikettenzertifizierung. Werte aus nicht öffentlichen Quellen sind als „advisory“ markiert.