I dagens raske forretningsmiljø spiller strekkodeteknologi en avgjørende rolle i å strømline operasjoner og forbedre datahåndtering., GS1-128 er mye brukt over bransjer for sin allsidighet og evne til å kode detaljert produktinformasjon. Denne guiden går deg gjennom generering av GS1-128 strekkoder med Aspose.BarCode for .NETfra forståelse av applikasjonsidentifikatorer (AIs) til tilpasning av utseende og eksport av bilder.


Fullstendig eksempel

Dette eksempelet fra slutten:

  • Oppretter en gyldig GS1-streng ved hjelp av vanlige AIs: (01) GTIN-14, 17) Utløper YYMMDD, 10) Batch / Lott, 21 Serien.
  • Validerer lengder / formater.
  • Gjør et GS1-128 bilde med utskrifts-vennlig størrelse/marginer.
  • Lagre en PNG-fil Du kan skrive hardkodede verdier eller sende dem via kommandolinjeargs.
// File: Program.cs
// Compile: dotnet add package Aspose.BarCode && dotnet build
// Run (examples):
//   dotnet run --project . -- 1234567890123 260930 ABC123 SN-00987
//   dotnet run --project . -- 400638133393 260930 LOT-77 SER-42   (GTIN will be padded to 14 digits)

using System;
using Aspose.BarCode.Generation;

namespace GS1_128_BarcodeExample
{
    class Program
    {
        static int Main(string[] args)
        {
            try
            {
                // ---------------------------
                // 1) Read inputs (or defaults)
                // ---------------------------
                // Args: [0]=GTIN (≤14 digits), [1]=EXP YYMMDD, [2]=BATCH (var len), [3]=SERIAL (var len)
                string gtinRaw    = args.Length > 0 ? args[0] : "1234567890123";
                string expYyMmDd  = args.Length > 1 ? args[1] : "260930";       // 2026-09-30
                string batchLot   = args.Length > 2 ? args[2] : "ABC123";
                string serial     = args.Length > 3 ? args[3] : "SN-00987";

                // ---------------------------
                // 2) Normalize & validate
                // ---------------------------
                // Ensure GTIN is 14 digits (pad left with zeros when shorter)
                if (gtinRaw.Length > 14 || !IsAllDigits(gtinRaw))
                    throw new ArgumentException("GTIN must be numeric and ≤ 14 digits.");

                string gtin14 = gtinRaw.PadLeft(14, '0');
                if (gtin14.Length != 14) throw new ArgumentException("GTIN must be exactly 14 digits after padding.");

                // Optional (advanced): you can calculate or verify GTIN check digit here if desired.

                if (!IsValidYyMmDd(expYyMmDd))
                    throw new ArgumentException("(17) Expiration must be YYMMDD and represent a valid calendar date.");

                // Variable-length AIs (10) & (21) can be any non-empty strings; keep them short & scanner-friendly.
                if (string.IsNullOrWhiteSpace(batchLot)) throw new ArgumentException("(10) Batch/Lot cannot be empty.");
                if (string.IsNullOrWhiteSpace(serial))   throw new ArgumentException("(21) Serial cannot be empty.");

                // ---------------------------
                // 3) Compose GS1 code text
                // ---------------------------
                // Parentheses are human-readable; the library handles FNC1 as needed.
                string gs1Text = $"(01){gtin14}(17){expYyMmDd}(10){batchLot}(21){serial}";

                // ---------------------------
                // 4) Configure generator
                // ---------------------------
                using (var generator = new BarCodeGenerator(EncodeTypes.GS1_128, gs1Text))
                {
                    // Minimum module (bar) thickness — increase for thermal printers / rough media
                    generator.Parameters.Barcode.XDimension.Pixels = 3;

                    // Symbol height (for 1D-like linear symbol height inside GS1-128 area)
                    generator.Parameters.Barcode.BarHeight.Millimeters = 22f;

                    // Target output size (entire image). Adjust per label stock / DPI.
                    generator.Parameters.Barcode.ImageWidth.Inches  = 2.8f;
                    generator.Parameters.Barcode.ImageHeight.Inches = 1.2f;

                    // Quiet zones (margins) — critical for scan reliability
                    generator.Parameters.Barcode.LeftMargin.Millimeters   = 4f;
                    generator.Parameters.Barcode.RightMargin.Millimeters  = 4f;
                    generator.Parameters.Barcode.TopMargin.Millimeters    = 2f;
                    generator.Parameters.Barcode.BottomMargin.Millimeters = 2f;

                    // Human-readable text placement and formatting
                    generator.Parameters.Barcode.CodeTextParameters.Location = CodeLocation.Below;
                    generator.Parameters.Barcode.CodeTextParameters.FontSize.Point = 8f;
                    generator.Parameters.Barcode.CodeTextParameters.Space.Millimeters = 1.0f;

                    // ---------------------------
                    // 5) Save image (by extension)
                    // ---------------------------
                    string fileName = $"GS1_128_{gtin14}_{batchLot}_{serial}.png";
                    generator.Save(fileName);
                    Console.WriteLine($"✅ GS1-128 barcode saved: {fileName}");
                }

                return 0;
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine("❌ Error: " + ex.Message);
                Console.Error.WriteLine("Usage: <exe> <gtin≤14digits> <expYYMMDD> <batch> <serial>");
                return 1;
            }
        }

        // ---- Helpers ---------------------------------------------------------

        // Minimal YYMMDD validation (1900–2099 windowing for simplicity)
        static bool IsValidYyMmDd(string yymmdd)
        {
            if (string.IsNullOrWhiteSpace(yymmdd) || yymmdd.Length != 6) return false;
            if (!IsAllDigits(yymmdd)) return false;

            int yy = int.Parse(yymmdd.Substring(0, 2));
            int mm = int.Parse(yymmdd.Substring(2, 2));
            int dd = int.Parse(yymmdd.Substring(4, 2));

            int year = (yy >= 0 && yy <= 79) ? 2000 + yy : 1900 + yy; // simple window
            try
            {
                var _ = new DateTime(year, mm, dd);
                return true;
            }
            catch
            {
                return false;
            }
        }

        static bool IsAllDigits(string s)
        {
            foreach (char c in s)
                if (c < '0' || c > '9') return false;
            return true;
        }

        // Optional: GTIN-14 check digit calculator (Mod10). Use if you build GTIN from the first 13 digits.
        // static char CalcGtin14CheckDigit(string first13Digits) { ... }
    }
}

Bygg & løp

dotnet new console -n GS1_128_BarcodeExample -f net8.0
cd GS1_128_BarcodeExample
dotnet add package Aspose.BarCode
# Replace Program.cs with the code above, then:
dotnet run -- 1234567890123 260930 ABC123 SN-00987

Utgang PNG vil bli skrevet til arbeidskatalogen din.


Steg for steg guide

Trinn 1: Forstå GS1-128 grunnleggende

GS1-128 er en 128-basert kode Symbolikk som koder data ved hjelp av Application Identifiers (AIs) er.Hver AI definerer hva som følger (data type og lengde).

Vanlige AIS:

  • (01) av GTIN-14 (fast 14 siffer; pad med null på venstre hvis kortere)
  • 17) av Utløpsdato (YYMMDD)
  • (10) av Bøtter og bøtter (Variabel lengde)
  • (21) av Særlig i (Variabel lengde)

FNC1 håndtering: Når du passerer en menneskelesbar streng med parenteser (f.eks., (01)1234...(10)LOT), biblioteket setter automatisk inn FNC1-separatorer per GS1-regel – spesielt når en Variabel lengde AI Det følger med en annen.

Trinn 2: Konfigurer innstillinger for barkoder

Bruker xdimensjon (modul av tyngde), BarHeight,og Marginene For termiske etiketter, litt høyere XDimensjon og sjenerøse stille soner forbedre førstepass lesegrader.

generator.Parameters.Barcode.XDimension.Pixels = 3;
generator.Parameters.Barcode.BarHeight.Millimeters = 22f;
generator.Parameters.Barcode.LeftMargin.Millimeters = 4f;
generator.Parameters.Barcode.RightMargin.Millimeters = 4f;
generator.Parameters.Barcode.TopMargin.Millimeters = 2f;
generator.Parameters.Barcode.BottomMargin.Millimeters = 2f;

Trinn 3: Definer applikasjonsidentifikatorer (AIs)

Gutt til å 14 digits,Datoer som YYMMDD, og hold variabellengde AI-er konsise (unngå mellomrom / kontrollbiler).

string gtin14 = gtinRaw.PadLeft(14, '0');
string gs1Text = $"(01){gtin14}(17){expYyMmDd}(10){batchLot}(21){serial}";

Trinn 4: Sett inn barcode-tekst

Du kan angi GS1-teksten i konstruktøren eller senere via generator.CodeText.Eksemplet setter det i konstruktøren og viser hvordan du skal omfordele hvis det er nødvendig.

Trinn 5: Tilpasse utseende

Bestem om du skal vise Menneskelig lesbar kode Under de andre barene (CodeLocation.Below) eller undertrykke det hvis etikettoppsettet skriver ut tekst andre steder.

generator.Parameters.Barcode.CodeTextParameters.Location = CodeLocation.Below;
generator.Parameters.Barcode.CodeTextParameters.FontSize.Point = 8f;
generator.Parameters.Barcode.CodeTextParameters.Space.Millimeters = 1.0f;

Trinn 6: Generer og lagre

Ved hjelp av utvidelse (.png, .jpg, .bmp, etc.) for etikett arbeidsflyter, PNG Det er vanligvis best (for ikke å tape).

generator.Save("GS1_128_ProductLabel.png");

Praktiske tips og gotchas

  • Stille områder er viktige: Hvis en skanner sliter, øk venstre/høyre marginer og XDimension litt.
  • Termisk trykk: Alder / klær kan blø fine barer. XDimension (f.eks. 3-4 px) og holde media rene.
  • GTIN sjekk digit: Hvis du bygger GTIN-er, beregne / bekreft Mod10 sjekksifferen for å forhindre felter.
  • Dato for Windows: YY-vinduet i eksemplet er forenklet; juster det med forretningsreglene dine (f.eks. bare 20xx).
  • Versjonskontroll: Lagre størrelses-/marginparametere i konfigurasjon slik at strekkoder kan gjengis over miljøer.

Konklusjon

med Aspose.BarCode for .NET,å skape Standardiserte GS1-128 Barkoder er enkle. Definer dine AI, valider formater, juster utskriftsparametere og eksporter en ren PNG klar for merking. Bruk det komplette eksemplet ovenfor som et solid utgangspunkt, og juster deretter størrelses-/marginer og valideringsregler for å matche skriverne, materialene og skannerne dine.

More in this category