في بيئة الأعمال السريعة اليوم ، تلعب تكنولوجيا الباركود دوراً حاسماً في تسريع العمليات وتعزيز إدارة البيانات.من بين معايير البركيد المختلفة ، يتم استخدام GS1-128 على نطاق واسع في جميع الصناعات لمتنوعيتها والقدرة على تشفير معلومات المنتج التفصيلية.هذا الدليل يسيرك من خلال توليد الرموز اللامعة GS1-128 مع Aspose.BarCode for .NET - من فهم تحديد التطبيقات (AIs) إلى تخصيص المظهر وتصدير الصور.
نموذج كامل
هذا المثال النهائي:
- إنشاء سلسلة GS1 سارية المفعول باستخدام AIs المشتركة: (01) GTIN-14، (17) Expiry YYMMDD*, (2) 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 في دليل عملك.
دليل خطوة بخطوة
الخطوة 1: فهم أساسيات 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 آخر.
الخطوة 2: قم بتثبيت إعدادات الباركود
استخدم 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;
الخطوة الثالثة: تحديد معرفات التطبيق (AIs)
ضع GTIN إلى 14 رقما، وتاريخ النموذج هو YYMMDD**، والحفاظ على متغير الطول AIs متواضعة (تجنب المساحات / شرائح التحكم).
string gtin14 = gtinRaw.PadLeft(14, '0');
string gs1Text = $"(01){gtin14}(17){expYyMmDd}(10){batchLot}(21){serial}";
الخطوة 4: إعداد النص الباركود
يمكنك إعداد النص GS1 في المصنع أو في وقت لاحق من خلال generator.CodeText
مثال يضعها في البناء ويظهر كيفية إعادة التخصيص إذا لزم الأمر.
الخطوة 5: تخصيص المظهر
يقرر ما إذا كان لعرض الرمز القابل للقراءة للإنسان تحت الشرائح (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");
نصائح عملية & Gotchas
- مادة المناطق القصوى: إذا كان المسح الضوئي يقاتل، وزيادة اليسار / اليمين الحدود و XDimension قليلا.
- الطابعات الحرارية: العمر/الملابس يمكن أن تتلاشى الشرائح الجميلة.
XDimension
(على سبيل المثال، 3 إلى 4 بكسل) والحفاظ على وسائل الإعلام نظيفة. - أرقام التحقق GTIN: إذا قمت بإنشاء أرقامه GTINS، قم بحساب/تحقق من رقم تحقق Mod10 لمنع أخطاء الميدان.
- نوافذ التاريخ: نافذة YY في المثال بسيطة؛ تتوافق مع قواعد عملك (على سبيل المثانة، 20xx فقط).
- ** التحكم في النسخة: ** تخزين المعلمات الحجم / الحد الأدنى في التكوين بحيث تكون رموز الشريط قابلة للتكرار في جميع البيئات.
استنتاجات
مع Aspose.BarCode for .NET، إنشاء معايير-مطابقة GS1-128 الباركود هو بسيط. تعريف AIs الخاص بك، وتصحيح تنسيقات، وأعلى معلمات الطباعة، واستخراج PNG نظيفة جاهزة للتسمية. استخدم المثال الكامل أعلاه كنقطة انطلاق صلبة، ثم تعديل حجم / الحدود وقواعد التصديق لتتناسب مع الطابعات والمواد والمسح الضوئي.