Dalam lingkungan bisnis yang cepat dan cepat hari ini, teknologi barcode memainkan peran penting dalam mempercepat operasi dan meningkatkan manajemen data.Di antara berbagai standar Barcode, GS1-128 digunakan secara luas di seluruh industri karena versatilitas dan kemampuan untuk mengenkripsi informasi produk terperinci. panduan ini membimbing Anda melalui menghasilkan kode bar GS1-128, dengan Aspose.BarCode untuk .NET—dari pemahaman Application Identifiers (AIs) untuk menyesuaikan tampilan dan mengekspor gambar.

Contoh lengkap

Contoh dari akhir ke akhir:

  • Membangun string GS1 yang valid dengan menggunakan AI umum: (01) GTIN-14, (17) Expiry YYMMDD***,*(10) Batch/Lot** dan (21) Serial*.
  • Mengidentifikasi panjang/format
  • Renders gambar GS1-128 dengan ukuran/margin yang ramah cetak.
  • Menyimpan file PNG. Anda dapat nilai hardcode atau melewati mereka melalui order-line args.
// 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) { ... }
    }
}

Bangun & Berjalan

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

Hasil PNG akan ditulis ke direktori kerja Anda.

Panduan Langkah-Langkah

Langkah 1: Memahami dasar-dasar GS1-128

GS1-128 adalah simbolik berdasarkan kode 128** yang menyulitkan data menggunakan Identifikasi Aplikasi (AI)**.Setiap AI menentukan apa yang berikut (tipe data & panjang).

yang biasa :

  • (01) GTIN-14 (diatur dengan 14 digit; pad dengan nol di sebelah kiri jika lebih pendek)
  • (17) Tarikh tamat (** YYMMDD**)
  • (10) Batch/Lot (** panjang variabel**)
  • (21) Serial (** panjang variabel**)

FNC1 pengendalian: Ketika Anda melewati string yang dapat dibaca oleh manusia dengan parentes (misalnya, (01)1234...(10)LOT), perpustakaan secara otomatis memasukkan pemisah FNC1 sesuai dengan aturan GS1—terutama diperlukan ketika AI ** variable-length** diikuti oleh AI lain.

Langkah 2: Mengatur pengaturan barcode

Gunakan XDimension (kecepatan modul), BarHeight, dan margin untuk menyeimbangkan kepadatan cetak dan toleransi scanner. Untuk label termal, sedikit lebih tinggi XDdimension dan zon tenang yang murah hati meningkatkan kadar bacaan pas 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: Menetapkan Identifikasi Aplikasi (AIs)

Pad GTIN ke 14 digit, format tanggal sebagai YYMMDD dan menjaga variabel-panjang AIs konsis (menghindari ruang/tanduk kontrol).

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

Langkah 4: Menetapkan Barcode Text

Anda dapat mengatur teks GS1 di konstruktor atau kemudian melalui generator.CodeTextContohnya meletakkannya di konstruktor dan menunjukkan bagaimana untuk menyesuaikan jika perlu.

Langkah 5: Mengadaptasi Penampilan

Tentukan apakah untuk menampilkan teks kode yang dapat dibaca oleh manusia** di bawah baris (CodeLocation.Belowatau menghapus jika layout 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: Menghasilkan & Menyelamatkan

Menyelamatkan dengan memperpanjang (.png, .jpg, .bmpUntuk aliran kerja label, PNG biasanya terbaik (tidak kalah).

generator.Save("GS1_128_ProductLabel.png");

Tips dan Gotchas

  • Quiet zone matter: Jika scanner berjuang, meningkatkan margin kiri/kanan dan XDimension sedikit.
  • Pencetak termal: Umur/pakaian dapat menggosok bar yang halus. XDimension (misalnya, 3-4 px) dan menjaga media bersih.
  • GTIN check digit: Jika Anda membangun GTIN, komputasi / verifikasi Mod10 check digital untuk mencegah kesalahan lapangan.
  • Jendela tanggal: jendela YY dalam contohnya sederhana; sesuai dengan aturan bisnis Anda (misalnya, hanya 20xx).
  • Kontrol versi: Simpan parameter ukuran/margin dalam konfigurasi sehingga kode bar dapat diulang di seluruh lingkungan.

Kesimpulan

Dengan Aspose.BarCode untuk .NET, membuat kode bar yang mematuhi standar GS1-128 adalah mudah.Tetapkan AIs Anda, validasi format, parameter cetakan ton, dan mengekspor PNG bersih siap untuk label.Menggunakan contoh lengkap di atas sebagai titik permulaan yang solid, kemudian menyesuaikan ukuran/margin dan aturan validasi untuk sesuai dengan pencetak, bahan dan skanner Anda.

More in this category