در محیط کسب و کار سریع امروز، تکنولوژی بارکد نقش مهمی در تسهیل عملیات و بهبود مدیریت داده ها ایفا می کند. GS1-128 به دلیل تنوع و توانایی آن برای رمزگذاری اطلاعات دقیق محصول در سراسر صنایع به طور گسترده ای مورد استفاده قرار می گیرد. این راهنمای شما را از طریق تولید کدهای بار GS1-128 با Aspose.BarCode برای .NET – از درک شناسه های کاربردی (AIs) تا سفارشی سازی ظاهر و صادرات تصاویر.

نمونه کامل

این مثال نهایی:

  • ساختن یک ردیف معتبر GS1 با استفاده از AIs های مشترک: (01) GTIN-14، (27) Expiry YYMMDD**، (10) Batch/Lot* و (21) Serial*.
  • مدت ها و فرمت ها را تایید می کند.
  • بازگرداندن یک تصویر GS1-128 با اندازه / مارجین های چاپ دوستانه.
  • یک فایل PNG ذخیره کنید. شما می توانید ارزش های کد سخت را وارد کنید یا آنها را از طریق آرگ های خط فرمان منتقل کنید.
// 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) { ... }
    }
}
  • ساخت و اجرا *
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 در دایرکتوری کار شما نوشته خواهد شد.

راهنمای گام به گام

مرحله اول: درک مفاهیم GS1-128

GS1-128 یک نماد ** بر اساس کد 128** است که داده ها را با استفاده از ** شناسه های کاربردی (AI)** رمزگذاری می کند.

به طور معمول:

  • (01) GTIN-14 (تصمیم 14 عدد؛ با صفر در سمت چپ اگر کوتاه تر)
  • (17) تاریخ انقضا (** YYMMDD**)
  • (10) Batch/Lot (** طول متغیر**)
  • (21) سریالی (** طول متغیر**)

FNC1 پردازش: هنگامی که شما یک ردیف قابل خواندن انسان را با پارانتزها (به عنوان مثال، (01)1234...(10)LOT)، کتابخانه به طور خودکار جداگانه های FNC1 را با توجه به قوانین GS1 وارد می کند – به ویژه زمانی که یک AI ** متغیر طول** توسط AI دیگری دنبال می شود.

مرحله دوم: تنظیم تنظیمات بارکد

استفاده از XDimension (سختی ماژول)، BarHeight، و margins برای تعادل تراکم چاپ و تحمل اسکنر.برای برچسب های حرارتی، کمی بالاتر XDdimension و ناحیه های آرامش بخش بهبود نرخ خواندن اولین گذر.

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: تعیین شناسه های کاربردی (AIs)

GTIN را به 14 عدد، تاریخ فرمت به عنوان YYMMDD تنظیم کنید و طول متغیر AIs را مختصر نگه دارید (از فضاهای کنترل اجتناب کنید).

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

مرحله چهارم: تنظیم کد نوار

شما می توانید متن GS1 را در سازنده یا بعد از آن از طریق generator.CodeTextمثال آن را در سازنده قرار داده و نشان می دهد که چگونه در صورت لزوم مجددا تعیین شود.

مرحله پنجم: سفارشی سازی ظاهر

تصمیم بگیرید که آیا متن کد قابل خواندن ** در زیر نوارها نمایش داده می شود یا نه (CodeLocation.Below) یا آن را حذف کنید اگر طرح برچسب شما متن را در جای دیگری چاپ می کند.

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

مرحله ششم: تولید و ذخیره

در ادامه با تمدید (.png, .jpg, .bmpبرای جریان های کار برچسب، PNG معمولا بهترین (بدون از دست دادن) است.

generator.Save("GS1_128_ProductLabel.png");

راهنمایی های عملی و گوتشا

  • مطالعه مناطق کویت: اگر یک اسکنر درگیر باشد، مرزهای چپ و راست و XDimension را کمی افزایش دهید.
  • ** پرینترهای حرارتی:** سن / لباس می تواند نوار های نازک را بشویید. XDimension (به عنوان مثال، 3 تا 4 پیکسل) و رسانه ها را تمیز نگه دارید.
  • GTIN چک دیجیتال: اگر GTIN ها را بسازید، برای جلوگیری از اشتباهات میدان، چک Mod10 را محاسبه و بررسی کنید.
  • فینال تاریخ: پنجره YY در مثال ساده است؛ متناسب با قوانین کسب و کار شما (به عنوان مثال، فقط 20xx).
  • ** کنترل نسخه: ** پارامترهای اندازه گیری / مارجین را در تنظیمات ذخیره کنید تا بارکدها در اطراف محیط ها قابل پخش باشند.

نتیجه گیری

با Aspose.BarCode برای .NET، ایجاد معیارهای مطابقت با GS1-128 کدهای نوار ساده است. AIs خود را تعریف کنید، فرمت های اعتباربخشی، پارامترهای چاپ تن، و صادرات یک PNG خالص آماده برای برچسب گذاری. استفاده از نمونه کامل بالا به عنوان یک نقطه شروع جامد، پس از آن تنظیم اندازه گیری / محدودیت ها و قوانین تأیید برای متناسب با چاپگرها، مواد و اسکنر خود.

More in this category