Mūsdienu straujā biznesa vidē svītrkodu tehnoloģijai ir izšķiroša nozīme darbību racionalizēšanā un datu pārvaldības uzlabošanā., GS1-128 ir plaši izmanto visās nozarēs, jo tā daudzpusība un spēja kodēt detalizētu produktu informāciju. Aspose.BarCode for .NET— no Application Identifiers (AIs) izpratnes līdz izskata pielāgošanai un attēlu eksportēšanai.


Pilns piemērs

Šāds piemērs no gala:

  • Izveido derīgu GS1 virkni, izmantojot kopīgus AI: (01) GTIN-14, (17) Izsludina JYMMDD, (2) Ls vai Ls, (21) Sērijas.
  • Validē garumu / formātu.
  • Rādīt GS1-128 attēlu ar drukāšanas draudzīgu izmēru/maržām.
  • Ievadiet PNG failu. Varat izmantot hardcodes vērtības vai nodot tos ar komandas rindiņas args palīdzību.
// 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) { ... }
    }
}

Izveidojiet & Run

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

Izejas PNG tiks rakstīts jūsu darba direktorijā.


Step-by-Step ceļvedis

1. solis: GS1-128 pamatprincipi

GS1-128 ir 128 bāzes kods simbolika, kas kodē datus, izmantojot Lietojumprogrammu identifikatori (AI).Katrs AI definē to, kas seko (datu veids un garums).

Kopējais AIS:

  • (01) ar GTIN-14 (fiksēti 14 cipari; pad ar nulli kreisajā pusē, ja tas ir īsāks)
  • (17) Parādīt Izsniegšanas termiņš (YYMMDD)
  • (10) Parādīt Lāčplēša diena (Mainīgā garuma)
  • (21) Par Sērija (Mainīgā garuma)

FNC1 darbība: Kad jūs iziet cilvēka lasāmās virknes ar starpsienas (piemēram,., (01)1234...(10)LOT), bibliotēka automātiski ievieto FNC1 separatorus pēc GS1 noteikumiem – īpaši nepieciešami, ja Variācijas garums Pēc tam seko vēl viens AI.

2. solis: Konfigurējiet barkoda iestatījumus

Izmantojiet Xdimensija (modulā ir iekļauts arī, BarHeight,un Margā lai līdzsvarotu drukāšanas blīvumu un skeneru toleranci. termiskās etiķetes, nedaudz augstāks XDimension un dāsnas klusas zonas uzlabo pirmā lasīšanas ātrumu.

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;

3. solis: Definējiet lietojumprogrammu identifikatorus (AIs)

Pad GTIN 2 14 digits,Datums, kad datums tiek YYMMDD, un saglabājiet mainīgās garuma AI īsumā (izvairīties no telpām / kontroles tvertnēm).

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

4. solis: Iestatīt barkoda tekstu

GS1 tekstu var iestatīt konstruktorā vai vēlāk, izmantojot generator.CodeText.Piemērs to ievieto konstruktorā un parāda, kā vajadzības gadījumā to pārdēvēt.

5. solis: pielāgojiet izskatu

Izlemt, vai parādīt Cilvēka lasāms kods zem bāriem (CodeLocation.Below) vai izslēgt to, ja jūsu etiķetes izkārtojums drukā tekstu citur.

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

6. solis: Izveidojiet un saglabājiet

Ievadiet ar paplašinājumu (.png, .jpg, .bmp, utt.) par etiķetes darba plūsmām, PNG Parasti tas ir labākais (bez zaudējumiem).

generator.Save("GS1_128_ProductLabel.png");

Praktiskie padomi & Gotchas

  • Klusās zonas nozīmē: Ja skeneris cīnās, nedaudz palieliniet kreiso / labo malu un XDimension.
  • Termiskais printeris: Vecums / apģērbs var izbalināt smalkas joslas. XDimension (piemēram, 3–4 px) un saglabājiet plašsaziņas līdzekļus tīrus.
  • GTA V kontroles skaitlis: Ja tiek veidotas GTIN, aprēķiniet / pārbaudiet Mod10 pārbaudes ciparu, lai novērstu lauka kļūdas.
  • Windows datumi: Piemērā YY logs ir vienkāršs; saskaņo ar jūsu uzņēmējdarbības noteikumiem (piemēram, tikai 20xx).
  • Versijas kontrole: Uzglabāt izmēra/maržas parametrus konfigurācijā, lai svītrkodu varētu atkārtot visās vidēs.

Secinājums

ar Aspose.BarCode for .NET,Izveidot Saskaņā ar GS1-128 standartiem Barcodes ir vienkāršs. Definējiet savu AI, apstipriniet formātus, pielāgojiet drukāšanas parametrus un eksportējiet tīru PNG, kas ir gatavs marķējumam. Izmantojiet iepriekš minēto pilnu piemēru kā stabilu sākumpunktu, pēc tam pielāgojiet izmēru/maržus un validācijas noteikumus, lai tie atbilstu jūsu printeriem, materiāliem un skeneriem.

More in this category