Dalam persekitaran perniagaan yang pesat hari ini, teknologi barcode memainkan peranan penting dalam menguruskan operasi dan meningkatkan pengurusan data., GS1-128 digunakan secara meluas di seluruh industri kerana keunikan dan keupayaan untuk mengkodkan maklumat produk terperinci. panduan ini membimbing anda melalui pengeluaran kod bar GS1-128 dengan Aspose.BarCode for .NETdaripada memahami pengenalan aplikasi (AIs) untuk menyesuaikan penampilan dan mengeksport imej.


Contoh Lengkap

Contoh akhir ini ialah:

  • Membina string GS1 yang sah menggunakan AIs biasa: (01) GTIN-14, (Baca: Perlembagaan YYMMDD, (Batch / lot yang, (21) Perbincangan.
  • Mengesahkan panjang / format.
  • Menghasilkan imej GS1-128 dengan saiz / margin yang mesra cetak.
  • Menyimpan fail PNG Anda boleh mengedit nilai hardcode atau menghantarnya melalui args baris perintah.
// 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) { ... }
    }
}

Pembinaan & 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

PNG output akan ditulis ke direktori kerja anda.


Panduan Langkah-Langkah

Langkah 1: Memahami asas GS1-128

GS1-128 ialah Kod 128 berdasarkan simbol yang mengkodkan data menggunakan Pengenalan Aplikasi (AIs).Setiap AI menentukan apa yang berikut (tipe data & panjang).

AIS yang biasa :

  • ( 1 ) GTIN-14 (diterbitkan 14 digit; pad dengan nol di sebelah kiri jika lebih pendek)
  • 17) daripada Tarikh Tamat Pengeluaran (YYMMDD)
  • (10) yang Perkhidmatan / Perkhidmatan (Variabel panjang)
  • (21) yang Perkhidmatan (Variabel panjang)

FNC1 Pengurusan: Apabila anda meletakkan string yang boleh dibaca oleh manusia dengan parantez (contohnya,., (01)1234...(10)LOT), perpustakaan secara automatik memasukkan pemisah FNC1 per peraturan GS1 – terutamanya diperlukan apabila Variabel-panjang AI Diikuti oleh orang lain.

Langkah 2: Mengesetkan barcode

digunakan xDimensi (Penghantaran Modul yang dikeluarkan), BarHeight,dan Margin untuk menyeimbangkan kepadatan cetak dan toleransi pemindai. untuk label termal, sedikit lebih tinggi XDimension dan zon tenang yang murah hati meningkatkan kadar bacaan pertama.

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;

Langkah 3: Menentukan pengenal aplikasi (AIs)

Tag: jati diri 14 digits,Format tarikh sebagai YYMMDD, dan menjaga AIs panjang variabel ringkas (untuk mengelakkan ruang / kenderaan kawalan).

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

Langkah 4: Tentukan Barcode

Anda boleh menetapkan teks GS1 dalam pembina atau kemudian melalui generator.CodeText.Contoh ini meletakkan ia dalam pembina dan menunjukkan bagaimana untuk mengalih keluar jika perlu.

Langkah 5: Menentukan penampilan

memutuskan sama ada untuk menunjukkan Kode teks yang boleh dibaca oleh manusia di bawah bar (CodeLocation.Below) atau menekannya jika tata letak label anda mencetak teks di tempat lain.

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

Langkah 6: Mencipta & Simpan

Menyelamatkan daripada perpecahan (.png, .jpg, .bmp,. dan lain-lain. untuk aliran kerja label, PNG yang paling baik (biasanya tidak mempunyai.

generator.Save("GS1_128_ProductLabel.png");

Tips & Gotchas yang praktis

  • Kawasan yang tenang penting: Jika pemindai bermasalah, meningkatkan margin kiri/ kanan dan XDimension sedikit.
  • Pencetak Termal : Usia / pakaian boleh membengkak bar halus. XDimension (contohnya, 3–4 px) dan simpan media bersih.
  • Tentukan digit cek: Jika membina GTIN, mengira/melakukan pengesahan digit cek Mod10 untuk mengelakkan kesilapan medan.
  • Perkhidmatan Windows : Jendela YY dalam contoh ini adalah ringkas; selaras dengan peraturan perniagaan anda (contohnya, 20xx sahaja).
  • Pengawal Versi : Simpan parameter saiz/margin dalam konfigurasi supaya barcode boleh diulang di seluruh persekitaran.

Kesimpulan

dengan Aspose.BarCode for .NET,untuk mewujudkan Sesuai dengan standard GS1-128 Barcodes mudah. Tentukan AI anda, mengesahkan format, tunjukkan parameter cetak, dan eksport PNG bersih yang siap untuk label. Gunakan contoh lengkap di atas sebagai titik permulaan yang kukuh, kemudian tunjukkan saiz/margin dan peraturan pengesahan untuk mencocokkan pencetak, bahan, dan pemindai.

More in this category