Günümüzün hızlı iş ortamında, çubuk kodu teknolojisi operasyonları akıcı hale getirmek ve veri yönetimini geliştirmek için önemli bir rol oynamaktadır. Çeşitli barkod standartları arasında GS1-128 çeşitli endüstrilerde çeşitliliği ve ayrıntılı ürün bilgileri kodlama yeteneği için yaygın olarak kullanılmaktadır. Bu rehber, görünümünü özelleştirmek ve görüntüleri ihraç etmek için Aspose.BarCode for .NET ile GS1-128.

Tam örnek

Sonuç olarak bu örnek:

  • Ortak Aİ’ler kullanılarak geçerli bir GS1 zinciri oluşturur: (01) GTIN-14, (17) YYMMDD* sona erdirme,*(10) Batch/Lot** ve (21) Serial*.
  • Uzunluklar / biçimleri doğrulamaktadır.
  • GS1-128 resimleri baskı dostu boyutları / marjları ile sunar.
  • Bir PNG dosyasını kaydeder. Sert kod değerleri veya komut çizgisi args aracılığıyla geçebilirsiniz.
// 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) { ... }
    }
}
  • Yapım & Çalışma *
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 çıkışı çalışma dizininize yazılacaktır.

adım adım rehber

1. Adım: GS1-128 Temelleri Anlamak

GS1-128 Kodu 128-baslı bir sembolizedir ve Aplikasyon Tanıtıcıları (AI) kullanılarak verileri kodlar.

Birleşik Aİ:

  • (01) GTIN-14 (düzleştirilmiş 14 rakam; solda zero ile çubuk daha kısa ise)
  • (17) Sona erme tarihi (** YYMMDD**)
  • (10) Batch/Lot (** değişken uzunluk**)
  • (21) Seriyel (** değişken uzunluk**)

FNC1 işleme: Parantezilerle insan okunabilir bir zincir geçirirken (örneğin, (01)1234...(10)LOTKütüphane otomatik olarak GS1 kurallarına göre FNC1 ayrıştırıcıları yerleştirir - özellikle bir ** değişken uzunluk AI** başka bir AI tarafından takip edildiğinde gereklidir.

Adım 2: Barkod ayarlarını ayarlar

XDimension (modül kalınlığı), BarHeight ve margin baskı yoğunluğunu ve tarayıcı toleransını dengelemek için kullanın. termal etiketler için, biraz daha yüksek XDdimension ve cömert sessiz bölgeler ilk geçiş okuma oranlarını iyileştirir.

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. Adım: Uygulama tanımlayıcıları (AI) tanımlamak

GTIN’i 14 sayfa, format tarihleri YYMMDD olarak yapıştırın ve değişken uzunluğu AIs’leri sıkı tutun (uzay/kontrol çarşaflarından kaçının).

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

Adım 4: Barkod metni oluşturun

GS1 metni yapımcıda veya daha sonra kullanarak ayarlayabilirsiniz. generator.CodeTextÖrnek, üreticiye yerleştirilir ve gerekirse nasıl yeniden dağıtılacağını gösterir.

Adım 5: Görüntüleme özelleştirme

*İnsan okunabilir kod metnini ** çubuğunun altında görüntülemeye karar verin (CodeLocation.Below) veya etiket çerçevesi başka bir yerde metin yazdırırsa kaldırın.

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

Adım 6: Generate & Save

Genişletme süresi (.png, .jpg, .bmpetiket çalışma akışları için PNG genellikle en iyisidir (kayıp).

generator.Save("GS1_128_ProductLabel.png");

Pratik İpuçları & Gotchas

  • Quiet bölgeleri: Bir tarayıcı çarpışırsa, sol/sağ marjları ve XD boyutunu hafifçe artırın.
  • Thermal yazıcılar: Yaş / giyim ince çubukları karıştırabilir. XDimension (Örneğin, 3-4 px) ve medyayı temiz tutun.
  • GTIN kontrol sayısı: GTIN’leri oluşturursanız, alan hatalarını önlemek için Mod10 kontrol numarasını hesaplayın / doğrulayın.
  • ** Tarih pencereleri:** Örnekte YY pencere basittir; iş kurallarına uymak (örneğin, sadece 20xx).
  • Versyon kontrolü: Boyut / marj parametrelerini konfig’te saklayın, böylece çubuk kodları çevrelerde çoğaltılabilir.

Sonuç

Aspose.BarCode for .NET ile standart uyumlu GS1-128 çubuk kodları oluşturmak basittir. AIs’lerinizi tanımlayın, biçimleri doğrulayın, ton baskı parametreleri ve etiketleme için hazır temiz bir PNG’yi ihraç edin. Yukarıdaki tam örneği sağlam bir başlangıç noktası olarak kullanın ve ardından boyut / marj ve geçerlilik kurallarını ayarlayarak yazıcılarınız, malzemeleriniz ve tarayıcılarınızla uyum sağlayın.

More in this category