في بيئة الأعمال السريعة الوتيرة اليوم، تلعب تقنية الباركود دورًا حيويًا في تبسيط العمليات وتعزيز إدارة البيانات. بين مختلف معايير الباركود،, GS1-128 يُستخدم على نطاق واسع عبر الصناعات بفضل مرونته وقدرته على ترميز معلومات المنتج التفصيلية. يوضح هذا الدليل لك كيفية إنشاء باركودات GS1-128 باستخدام Aspose.BarCode for .NET—من فهم Application Identifiers (AIs) إلى تخصيص المظهر وتصدير الصور.


مثال كامل

هذا المثال من البداية إلى النهاية:

  • يبني سلسلة GS1 صالحة باستخدام AIs الشائعة: (01) GTIN-14, انتهاء الصلاحية YYMMDD, (10) دفعة/لوط, (21) مسلسل.
  • يتحقق من الأطوال/الصيغ.
  • يعرض صورة GS1-128 بحجم/هوامش صديقة للطباعة.
  • يحفظ ملف PNG. يمكنك hardcode القيم أو تمريرها عبر command-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) { ... }
    }
}

إنشاء وتشغيل

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 الناتج إلى دليل العمل الخاص بك.


خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة خطوة

الخطوة 1: فهم أساسيات GS1-128

GS1-128 هو a مستند إلى Code 128 الرموز التي تشفر البيانات باستخدام معرفات التطبيقات (AIs). كل AI يحدد ما يلي (نوع البيانات & الطول).

الذكاءات الاصطناعية الشائعة:

  • (01) GTIN-14 (ثابت 14 رقمًا؛ أضف أصفارًا على اليسار إذا كان أقصر)
  • (17) تاريخ الانتهاء (YYMMDD)
  • (10) دفعة/لوط (طول متغيّر)
  • (21) متسلسل (طول متغير)

معالجة FNC1: عند تمرير سلسلة قابلة للقراءة من قبل الإنسان تحتوي على أقواس (على سبيل المثال., (01)1234...(10)LOT), المكتبة تُدرج تلقائيًا فواصل FNC1 وفقًا لقواعد GS1—وهو ضروري بشكل خاص عندما يكون الذكاء الاصطناعي بطول متغير يتبعها AI آخر.

الخطوة 2: تكوين إعدادات الباركود

استخدام XDimension (سُمك الوحدة)،, BarHeight, و هوامش لتحقيق توازن بين كثافة الطباعة وتحمل الماسح. بالنسبة للملصقات الحرارية، فإن زيادة طفيفة في XDimension ومناطق الهدوء الواسعة تحسن معدلات القراءة في المحاولة الأولى.

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 digits, صغّ التواريخ كـ YYMMDD, واحتفظ بـ AIs ذات الطول المتغيّر مختصرة (تجنب المسافات/أحرف التحكم).

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

الخطوة 4: تعيين نص الباركود

يمكنك تعيين نص GS1 في المُنشئ أو لاحقًا عبر generator.CodeText. يوضح المثال أنه يتم تعيينه في المُنشئ ويظهر كيفية إعادة تعيينه إذا لزم الأمر.

الخطوة 5: تخصيص المظهر

قرر ما إذا كان يجب عرض the نص شفرة قابل للقراءة البشرية تحت القضبان (CodeLocation.Below) أو قم بإخفائه إذا كان تخطيط الملصق يطبع النص في مكان آخر.

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

الخطوة 6: إنشاء وحفظ

حفظ حسب الامتداد (.png, .jpg, .bmp, إلخ). بالنسبة لسير عمل العلامات،, PNG عادةً ما يكون هو الأفضل (بدون فقدان).

generator.Save("GS1_128_ProductLabel.png");

نصائح عملية ومفاجآت

  • المناطق الهادئة مهمة: إذا كان الماسح يواجه صعوبة، increase left/right margins وXDimension قليلاً.
  • الطابعات الحرارية: يمكن أن يؤدي العمر/الاستعمال إلى تشويش الخطوط الدقيقة. صدمة XDimension (مثلاً، 3–4 px) واحرص على إبقاء الوسائط نظيفة.
  • الرقم الرقمي للتحقق من GTIN: إذا كنت تُنشئ أرقام GTIN، احسب/تحقق من رقم التحقق Mod10 لمنع أخطاء الحقول.
  • نوافذ التاريخ: إن نافذة YY في المثال بسيطة؛ قم بمحاذاة مع قواعد عملك (مثلاً، 20xx فقط).
  • التحكم في الإصدارات: احفظ معلمات الحجم/الهامش في التكوين بحيث يمكن إعادة إنتاج الباركود عبر البيئات.

الخاتمة

مع Aspose.BarCode for .NET, إنشاء متوافق مع المعايير GS1-128 الباركود سهل. عرّف الـ AIs الخاصة بك، تحقق من صحة الصيغ، اضبط معلمات الطباعة، وصدر ملف PNG نظيف جاهز للوسم. استخدم المثال الكامل أعلاه كنقطة انطلاق قوية، ثم عدّل الأحجام/الهوامش وقواعد التحقق لتتناسب مع الطابعات والمواد والماسحات الضوئية الخاصة بك.

More in this category