ابدأ مجاناً

zplCloud Blog

محرّك zplCore.com متاح الآن: محرّك ملصقات zplCloud بصيغة SDK لـ ‎.NET

المحرّك الذي يقف خلف كل معاينة في zplCloud متاح الآن لتطبيقاتك الخاصة: تصيير ZPL II وEPL2 بدقة تُقاس بمراجع مطابقة لمخرجات الطابعة، و144 نوعًا من الرموز الشريطية، وفحص مسبق للامتثال، وScan-Proof، والتوأم الرقمي للطابعة، واختبارات الملصقات ضمن CI، وخادم MCP لوكلاء البرمجة.

16 دقائق قراءة zplCloud Team

المحرّك الذي يقف خلف zplCloud أصبح الآن SDK

لافتة “zplCore.com. The engine, as an SDK.” مع ملصق شحن حقيقي مُصيَّر بواسطة zplCore، وبجانبه نتيجة Scan-Proof للملف نفسه: Code 128 وData Matrix وPDF417 بالدرجة A، وGS1-128 SSCC بالدرجة D

كل معاينة وكل ملف PDF في zplCloud يُصيَّر بمحرّك واحد: zplCore.com. وابتداءً من اليوم يتوفّر هذا المحرّك بصيغة SDK لـ ‎.NET 10 لتستخدمه في تطبيقاتك الخاصة، مع كل الميزات التي يستخدمها zplCloud: تصيير ZPL II وEPL2 إلى PNG وPDF وSVG، وإنشاء الملصقات من البيانات، وفحصها وفق قواعد GS1 وشركات الشحن، وإعادة قراءة كل باركود، ومحاكاة الطابعات بما في ذلك أعطالها، ثم الطباعة. ويعمل على Windows وLinux وmacOS، وفي Docker وKubernetes، دون الحاجة إلى برنامج تشغيل للطابعة.

باختصار: zplCore.com مكتبة ‎.NET ومعها أداة سطر أوامر (CLI) وحزمة اختبارات وخادم MCP. يُصيِّر الملصقات كما تفعل طابعة Zebra افتراضية، وتُقاس دقته بمقارنته بمراجع مطابقة لمخرجات الطابعة. وإلى جانب التصيير يتولّى الفحص والمحاكاة: فحص مسبق للامتثال، وScan-Proof، والتوأم الرقمي للطابعة (Printer Twin)، وطابعة الفوضى (Chaos Printer)، واختبارات الملصقات ضمن CI. ويمكن طلب نسخة تجريبية عبر zplcore.com.

لماذا بنى zplCloud محرّكه الخاص

حتى أكتوبر 2026 كان zplCloud يستخدم حزمتَي ThermalLabel وZPLPrinter من Neodynamic للمعاينات ولتحويل التصاميم إلى ZPL. أما اليوم فـ zplCore.com هو المحرّك الوحيد في zplCloud: يُنتج المصمّم كود ZPL، وتُصيَّر معاينات PNG وSVG وPDF من هذا الكود نفسه تمامًا. ما تراه في المعاينة هو ما يصل إلى الطابعة، ولم يعد هناك مسار ثانٍ لإنشاء الصور.

كانت لدينا ثلاثة أسباب:

  • الطابعة هي المعيار. يُقارَن zplCore بكسلًا ببكسل، بهامش تسامح قدره نقطتان (2 dot)، بمراجع تصيير من Labelary مطابقة لمخرجات الطابعة: متوسط النتيجة 0.986 على 169 حالة اختبار، منها 131 حالة بنتيجة 0.99 أو أعلى و85 حالة متطابقة بكسلًا ببكسل. وتضمن الاختبارات الآلية ألّا تنخفض أي حالة عن نتيجتها الحالية.
  • التصيير وحده لا يكفي. قد يبدو الملصق سليمًا ومع ذلك يُرفض: باركود يتعدّى على المنطقة الهادئة (quiet zone)، أو حقل خارج رأس الطباعة، أو SSCC بُعده X (X-dimension) غير صحيح. أردنا محرّكًا يجيب عن هذه الأسئلة بنفسه، دون اتصال بالإنترنت وضمن عملية البناء.
  • قاعدة كود واحدة للسحابة ولخوادمك الخاصة. الوظائف التي تقف خلف أدوات zplCloud المجانية هي نفسها التي تحصل عليها في الـ SDK.

يُعدّ zplCore.com تنفيذًا مستقلًا مبنيًا على مواصفات ZPL II المنشورة علنًا وعلى معايير الرموز الشريطية. ولا يحتوي على أي كود من مورّدين تجاريين آخرين، والمكوّنات مفتوحة المصدر التي يستخدمها مُدرجة في إشعارات الأطراف الثالثة الخاصة به.

ما هو zplCore.com

المجالالمحتوى
المنصة‎.NET 10؛ مُختبَر على Windows 11 وmacOS وDebian وAzure Linux 3.0 (بما في ذلك distroless)؛ يتضمّن Dockerfile ومخطط Helm؛ متوافق مع NativeAOT
المُدخلاتZPL II وEPL2؛ ويمكن تحويل نماذج EPL إلى ZPL
المُخرجاتPNG وJPEG وWebP وBMP وGIF، وPDF وSVG (كلاهما بصيغة متجهية)، وTIFF وPCX وPCL وGRF وEPS وHTML، إضافةً إلى EPL وFingerprint وESC/POS
الباركود144 نوعًا من الرموز، من Code 128 وGS1 DataBar وQR إلى MaxiCode وDotCode وHan Xin؛ ومحلّل ومدقّق GS1 يدعم 534 معرّف تطبيق (AI)
ملصقات من البياناتنموذج ملصق بالمليمتر أو البوصة، وقوالب JSON، وربط البيانات بكائنات C# وEF Core وLiteDB وMongoDB وJSON، ومعالجة متدفقة باستهلاك ثابت للذاكرة
الطباعةTCP 9100، والمنفذ التسلسلي، وUSB، وWindows spooler، وCUPS؛ وحالة الطابعة عبر ~HS/~HQES؛ وطابعة افتراضية على TCP 9100
أنظمة الكتابةتشكيل النصوص عبر HarfBuzz ودعم الاتجاه الثنائي (bidi) للعربية والعبرية والتايلاندية والخطوط الهندية وCJK

بضعة أسطر من C# تكفي للحصول على معاينة:

using ZplCore;

var renderer = new ZplRenderer(new ZplRenderSettings { Dpi = 203 }.WithLabelSizeMm(100, 150));
List<byte[]> pngs = renderer.ProcessFile("labels.zpl");          // one PNG per label

renderer.Settings.OutputFormat = ZplOutputFormat.Pdf;             // one PDF, one page per label
File.WriteAllBytes("preview.pdf", renderer.ProcessFile("labels.zpl")[0]);

ماذا تعني «مطابقة لمخرجات الطابعة» بالتفصيل:

  • رموز QR (^BQ، الطراز 2) متطابقة على مستوى الوحدات (modules) مع مخرجات Zebra: اختيار الوضع والإصدار وتصحيح الأخطاء والقناع، وقد جرى التحقق من ذلك على أكثر من 3,600 رمز مرجعي من Labelary.
  • رموز PDF417 (^B7) وMicroPDF417 (^BF) متطابقة على مستوى الكلمات الرمزية (codewords) مع Labelary، وفق أسلوب الضغط الذي تتّبعه Zebra.
  • مجموعات المحارف (^CI) والأمر ^FH تعمل كما على الطابعة: بدون ^CI يكون الملصق بصفحة الترميز 850، وتستبدل ^CI0 حتى ^CI12 المحارف الوطنية، وتتبع صفحات ترميز Windows دليل ZPL، ومع ^CI28 تحمل الرموز ثنائية الأبعاد البايتات نفسها التي ترمّزها الطابعة.
  • سلوك Zebra مُستنسَخ بدقة: عروض التقدّم لمحارف الخط 0، وإزاحة موضع QR بمقدار ارتفاع ^BY، وبقاء Code 128 في الوضع N ضمن المجموعة الفرعية B، والأشرطة العريضة بحساب floor(ratio × module).

وهو سريع أيضًا. في إصدار release على Apple M3 Max أنتج zplCore ما يصل إلى 199,000 ملصق في الثانية بصيغة ZPL (تنسيق مُخزَّن، 100,000 ملصق في مهمة واحدة)، وأكثر من 5,000 معاينة PNG في الثانية باستخدام 10 خيوط معالجة (threads). ويمكن إعادة كل قياس بأمر واحد.

جولة في الميزات

جميع الصور والمخرجات في هذا القسم صادرة عن المحرّك نفسه: من وثائق zplCore أو من أداة zplCore CLI أو من أدوات zplCloud المجانية.

الفحص المسبق للامتثال

النصف السفلي من ملصق منصّة نقّالة (SSCC) مع تعليقات zplCore: كلا باركودَي GS1-128 مُعلَّمان بالأحمر مع القواعد ZPL3104 وZPL3105 وZPL3106 وZPL3110

تفحص الدالة ZplCompliance.Check الملصق وفق 84 قاعدة موزّعة على 8 حزم: ملصق GS1 اللوجستي، وSunrise 2027 مع GS1 Digital Link، وAmazon FBA، وUPS MaxiCode، والأساسيات الخاصة بـ FedEx وDHL Paket، وUDI، وRFID/EPC. وهي تقيس الملصق المُصيَّر بدلًا من قراءة النص: البُعد X بالمليمتر، وارتفاع الأشرطة، والمناطق الهادئة، وحجم النص المقروء (HRI)، وصيغ معرّفات التطبيق (AI) وأرقام التحقق. لكل نتيجة معرّف قاعدة وسطر وموضع ومصدر، وتتوفّر بصيغة نص أو JSON أو SARIF 2.1.0 أو صورة PNG مع تعليقات مثل الصورة أعلاه. وهذا هو المثال من أداتنا المجانية فحص مطابقة الملصق:

$ zplcore comply pallet.zpl --pack gs1-logistic --dpi 203
pallet.zpl:13:1: error ZPL3104: label 1 ^BC: X-dimension 0.25 mm (2 dot(s) at 203 dpi) is below the minimum 0.495 mm for logistic units (0.250 mm only if the unit is physically too small). [GS1 General Specifications 26.0 §5.12.3.5 Table 5-51]
    fix: Use ^BY4 or wider at 203 dpi.
pallet.zpl:15:1: error ZPL3106: label 1 ^BC: GS1-128 needs 10X quiet zones: the left quiet zone (30 dots = 3.754 mm) runs 20 dot(s) past the label edge. [GS1 General Specifications 26.0 §5.4.4.2, §5.4.6.3, Table 5-51]
    fix: Move the barcode or the neighbouring field, or reduce ^BY.
1 label(s) at 203 dpi, packs gs1-logistic GenSpecs 26.0 / LLG 1.3: 6 error(s), 0 warning(s), 2 info(s). Pre-check only, not a certification.

اختُصرت المخرجات إلى خطأين من الأخطاء الستة. تفحص حزمة Sunrise 2027 الرموز ثنائية الأبعاد عند صناديق الدفع في متاجر التجزئة، ويعرضها مقالنا GS1 Sunrise 2027: الرموز ثنائية الأبعاد عند صناديق الدفع بالتفصيل. ومن المهم التنبيه إلى أن هذا فحص مسبق وليس شهادة اعتماد. فهو لا يغني عن موافقة شركة الشحن أو الجهة المختصة، ولا عن جهاز تحقق (verifier) يفحص الملصق المطبوع. الوثائق

Scan-Proof: إثبات قابلية المسح

ملصق رفّ مع تعليقات Scan-Proof من zplCore: رمز EAN-13 عند الحافة اليسرى مُعلَّم بالأحمر بالدرجة F، ورمز QR بالأحمر بالدرجة D، وCode 39 وData Matrix بالأخضر بالدرجة A

تعيد الدالة ZplScanProof.Verify قراءة كل باركود من الصورة النقطية المُصيَّرة باستخدام مفكّكَي ترميز مستقلّين (zxing-cpp وZXing.Net)، وتقارن النتيجة ببيانات الحقل. وتقيس البُعد X والمناطق الهادئة وارتفاع الأشرطة والاقتطاع والتداخلات، ثم تمنح درجة من A إلى F: وهي فحص رقمي مسبق مبني على نموذج ISO/IEC 15415/15416، يُحسب بدقة الطابعة. في المثال المأخوذ من أداتنا المجانية Barcode Scan-Proof تُفكّ ترميزات الباركودات الأربعة كلها، لكن اثنين منها سيسبّبان مشكلات (المخرجات مختصرة):

$ zplcore verify shelf.zpl --dpi 203
[0.0] ^BE EAN-13 line 7 at 8,80 (285×120 dots, 0°)
  status: Match   digital grade: F (0.0)
  SP1101 error: Quiet zone left: 2.7X, 11X required (ISO/IEC 15420 / GS1); limited by the label edge.
  SP1102 error: The symbol is cut off by the label edge (129 pixels of its ink lie outside ^PW/^LL).
[0.1] ^BQ QR Code line 8 at 600,10 (125×245 dots, 0°)
  status: Match   digital grade: D (1.0)
  SP1101 warning: Quiet zone bottom: 3X, 4X required (ISO/IEC 18004); limited by other ink.

يحصل Code 39 على الدرجة A ولكن مع تحذير: النص "ART-4712" المجاور له يبدو كأنه سطر النص المقروء الخاص به، لكنه يختلف عن القيمة المرمّزة "ART-4711". ولا تغني هذه الدرجة عن جهاز تحقق معايَر يفحص الملصق المطبوع. الوثائق

من ZPL إلى نموذج ملصق قابل للتحرير

تحوّل الدالة Label.FromZpl كود ZPL الحالي إلى قالب قابل للتحرير ومرتبط بالبيانات: تصبح النصوص والباركودات والأشكال والصور وRFID عناصر محدّدة النوع، وتصبح حقول ^FN حقول بيانات، وتصبح تنسيقات ^DF قوالب. ويُفحص كل عنصر بكسلًا ببكسل مقارنةً بالأصل، وتعود جميع الملفات الـ 318 في مجموعة الاختبار مطابقة بكسلًا ببكسل. وهذا مثلًا ملصق الشحن الظاهر في اللافتة:

$ zplcore import hero-label.zpl -o label.json --report
1 label(s), 203 dpi (LabelSize), fidelity 1,0000
  label 1: fidelity 1.0000 pixel-exact, 38 typed, 0 raw item(s)
  Info: Resolution detected as 203 dpi from the label width

يستخدم zplCloud هذه الآلية نفسها لاستيراد ZPL إلى المصمّم (المزيد أدناه). الوثائق

فهم محتوى الملصق وإخفاء البيانات وفق GDPR

ملصقا شحن مُصيَّران بواسطة zplCore: على اليسار الأصل مع المرسِل والمستلِم ورقم التتبع والرموز ثنائية الأبعاد، وعلى اليمين النسخة المُنقّحة وقد استُبدلت فيها الأسماء والعناوين ورقم التتبع ومحتويات الباركود بقيم بديلة مع الحفاظ على التخطيط نفسه

تقرأ ZplExtract من كود ZPL بيانات المستلِم والمرسِل وأرقام التتبع مع أرقام التحقق، وSSCC وGTIN والتواريخ والأوزان، مع موضع كل منها وقيمة ثقة. ففي الملصق أعلاه تعثر على عنوان المستلِم بدرجة ثقة 0.95، وعلى SSCC 340123450000000017 من معرّف التطبيق GS1 AI (00) برقم تحقق صحيح، وعلى الوزن والتاريخ. أما ZplRedact فتستبدل البيانات الشخصية مع الحفاظ على التخطيط نفسه، بما في ذلك تعليقات ^FX وبيانات ^DF/^XF ومحتويات الرموز ثنائية الأبعاد، وتضع باركودات وهمية صالحة، ثم تبحث مرة أخرى: في هذا الملصق 28 إجراءً، و29 قيمة جرى البحث عنها، و0 قيمة متبقية. تعتمد هذه الآلية على القواعد وتعمل دون اتصال بالشبكة؛ يُرجى مراجعة النتيجة قبل مشاركتها، علمًا بأن النصوص الموجودة داخل الصور لا تُقرأ. الوثائق

GS1 Digital Link والترحيل إلى Sunrise 2027

ملصق مواد غذائية مُصيَّر بواسطة zplCore قبل الترحيل وبعده: على اليمين أُضيف رمز QR مع GS1 Digital Link بجانب EAN-13، ويحيط به إطار أخضر متقطّع

تعثر الدالة ZplGs1Migration.Migrate على الـ GTIN في رمز EAN/UPC أو GS1-128 أو ITF-14 أو GS1 DataBar، وتضيف في مساحة فارغة رمز QR مع GS1 Digital Link URI أو رمز GS1 DataMatrix، مع منطقته الهادئة وفحص مسبق للنتيجة وفق Sunrise. وفي هذا الملصق يُنقل رقم الدفعة وتاريخ «يُفضَّل استهلاكه قبل» من رمز GS1-128 (المخرجات مختصرة):

$ zplcore gs1 migrate cheese.zpl -o cheese-2d.zpl
label 1: migrated – added a QR Code with GS1 Digital Link URI with GTIN 09506000134352 right of the EAN-13 (^BE, line 9), top-aligned with the bars
  uri: https://id.gs1.org/01/09506000134352/10/L2604?15=270331
sunrise pre-check of the migrated ZPL: 0 error(s), 0 warning(s), 0 info(s)

وفي zplCloud تؤدّي الأداة المجانية ترحيل Sunrise 2027 المهمة نفسها داخل المتصفح. إنها أداة مساعدة للترحيل (migration assistant)، وليست شهادة اعتماد. الوثائق

RFID Studio

ملصق كرتونة مُصيَّر بواسطة zplCore مع باركود GS1-128 SSCC ورمز RFID الرمادي الذي تعرضه المعاينات للملصقات التي تحتوي على أمر كتابة RFID

ترمّز ZplRfid رموز EPC وتفكّ ترميزها وفق GS1 EPC Tag Data Standard 2.3 (SGTIN وSSCC وSGLN وGRAI وGIAI ومخططات «plus» في TDS 2.0)، وتُنشئ أوامر ^RF المطابقة. ويقارن فحص الاتساق بين الوسم (tag) والملصق المطبوع. في هذا المثال كان الوسم سيتلقّى SSCC مختلفًا عمّا يعرضه الباركود:

$ zplcore rfid check carton.zpl
carton.zpl:6:1: error ZPL3904: label 1 ^RF: The SSCC-96 EPC encodes SSCC (00) 340123450000000024, but ^BC prints 340123450000000017. [GS1 EPC Tag Data Standard 2.3 §7 (correspondence of EPC and GS1 keys); GS1 General Specifications 26.0 §4.13]
    fix: Encode the printed key, e.g. ZplRfid.EncodeEpc("(00)340123450000000017…") or 'zplcore rfid encode'.

ويشغّل الأمر zplcore rfid simulate أوامر RFID الخاصة بالملصق على وسم Gen2 محاكى، كما تفعل طابعة RFID. الوثائق

التوأم الرقمي للطابعة (Printer Twin)

ملصق الشحن نفسه بمقاس 4 × 6 بوصات مرتين: على اليسار مع تعليقات zplCore لطابعة ZQ510 برأس طباعة عرضه 72 مم والجزء الأيمن مظلَّل بالأحمر، وعلى اليمين المخرجات كما ستطبعها ZQ510، مقطوعةً عند 72 مم

هل سيُطبع هذا الملصق على هذا الطراز؟ تقارن الدالة ZplPrinterTwin.Check الملصق بواحد من 24 ملف تعريف (منها ZD421 وZD621 وZT411 وZT610 وZQ630 وثلاثة ملفات تعريف عامة)، وتُبلغ عن الحقول الواقعة خارج عرض رأس الطباعة، والملحقات غير المتوفرة مثل القاطع أو RFID، وحدود البرنامج الثابت (firmware)، والخطوط والذاكرة، إضافةً إلى تقدير لزمن الطباعة. وكل معلومة في ملفات التعريف مدعومة بمصدر مذكور أو مُعلَّمة بأنها غير معروفة. وهذا الملصق بمقاس 4 × 6 بوصات أعلاه على طابعة برأس طباعة عرضه 72 مم (تُعرض نتيجة واحدة من 21):

$ zplcore twin check hero-label.zpl --profile ZQ510-203
  ZPL5102 error (53:1): Label 1: ^BC ">;>800340123450000000017" at x=280 is 16 dots (2 mm) wider than the printhead of ZQ510-203 (576 dots = 72 mm): the right part is cut off; a clipped barcode does not scan.
ZQ510-203: 13 error(s), 8 warning(s), 0 info

الوثائق

طابعة الفوضى (Chaos Printer) ومعاينة القاطع

ستة ملصقات كراتين مُصيَّرة بواسطة zplCore في عمودين؛ وأسفل الملصقين 3 و6 خط قطع أحمر متقطّع مع رمز مقص ورمز إيقاف مؤقت

تستمع ZplVirtualPrinter على المنفذ TCP 9100، وتُصيِّر المهام الواردة، وتردّ على ~HS و~HQES كما تفعل الطابعة. وعند الطلب تحاكي الأعطال: نفاد الورق أو الشريط، أو فتح الرأس، أو امتلاء الذاكرة المؤقتة، أو انحشار القاطع، أو فشل RFID (RFID void)، أو انقطاع الاتصال، أو انتهاء المهلة، وكل ذلك وفق سيناريو محدّد وقابل للتكرار:

printer.Faults.Schedule(ZplFaultKind.PaperOut, ZplFaultTrigger.AfterLabels(3)); // label 4 waits
printer.Faults.Seed = 42;                                                       // deterministic random triggers

وتُظهر محاكاة القاطع المواضع التي تقطع عندها طابعة مزوّدة بقاطع (^MM و^PQ و^CN و~JK وغيرها)، وترسم خطوط القطع في معاينات PNG وSVG وPDF، كما في الصورة أعلاه: يقطع ^MMC مع ^PQ6,3 بعد الملصقين 3 و6. طابعة الفوضى · القاطع

Testing+‎ وGitHub Action

باركود SSCC لملصق منصّة نقّالة ثلاث مرات: قبل التعديل، وبعد التعديل بأشرطة أضيق وSSCC مختلف، وكصورة فروق باللونين الأحمر والأخضر

الملصقات كود، فاختبرها كما تختبر الكود. تعمل حزمة ZplCore.Testing مع xUnit وNUnit وMSTest:

ZplAssert.Label(zpl)
    .NoOverlaps()
    .Complies(CompliancePacks.Gs1LogisticLabel)
    .Barcode("SSCC").Decodes("(00)376104250021234569").HasGrade(atLeast: 'B')
    .And.MatchesSnapshot("pallet");

عند الإخفاق تذكر الرسالة العنصر وموضعه وسطر ZPL، وترفق رابطًا لصورة يظهر فيها العنصر محاطًا بإطار. ويشغّل الأمر zplcore check الفحوص نفسها على ملفات كثيرة، ويكتب النتائج بصيغ JUnit XML وSARIF وMarkdown. أما GitHub Action المضمّن في الـ SDK فيعلّق على طلبات الدمج (pull requests) بصور قبل/بعد/الفروق، ويسرد ما تغيّر. والصور أعلاه مأخوذة من تشغيل كهذا: تعديلٌ ضيّق باركود SSCC من ^BY4 إلى ^BY3 وغيّر بياناته (المخرجات مختصرة):

$ zplcore check labels/pallet.zpl --pack gs1-logistic --verify --baseline ../base
FAIL labels/pallet.zpl (1 label(s), 0.25 s) · changed vs baseline (3 element change(s))
  FAIL comply gs1-logistic
    labels/pallet.zpl:12:1: error ZPL3104: Label 1: X-dimension 0.375 mm (3 dot(s) at 203 dpi) is below the minimum 0.495 mm for logistic units (0.250 mm only if the unit is physically too small).
    labels/pallet.zpl:12:1: note ZT3001: Label 1: barcode ^BC Code128 at x=86 y=820: data "(00)376104250021234569" → "(00)376104250021234576"
FAILED (fail-on error)

الوثائق

خادم MCP لوكلاء البرمجة

يمنح zplcore-mcp كلًّا من Claude Code وClaude Desktop وVS Code مع GitHub Copilot وCursor ستًّا وعشرين أداة (26) عبر Model Context Protocol، منها: التصيير، والتدقيق (lint)، والتنسيق، والمقارنة (diff)، والامتثال، وScan-Proof، وإخفاء البيانات، والتوأم الرقمي للطابعة، وGS1 وRFID. يكتب الوكيل كود ZPL، وينظر إلى صورة PNG، ويقرأ التشخيصات، ثم يصلح الملصق في حلقة متكررة.

claude mcp add zplcore -- zplcore-mcp

صُمِّم الخادم للتعامل مع مُدخلات غير موثوقة. فهو يتواصل عبر stdio فقط ولا يفتح أي منفذ شبكة. ويُنفَّذ كل استدعاء في عملية عاملة (worker process) مستقلة ذات حدود للوقت والذاكرة وبيئة فارغة، دون وصول إلى الملفات أو الشبكة أو الطابعات أو متغيرات البيئة، وعلى macOS يُضاف عزل (sandbox) على مستوى نظام التشغيل. وتتحقق من هذه القواعد اختباراتٌ عدائية (adversarial tests) واختبارات fuzzing وتدقيقٌ لكود IL في الـ assembly. الوثائق

من PDF وSVG إلى ZPL أصلي (Vector-Lift)

على اليسار ملصق SVG يتضمّن عنوانًا وموقع تخزين وخطًا وCode 128 ورقمًا تسلسليًا وختم مراقبة الجودة؛ وعلى اليمين الملصق نفسه مُصيَّرًا من ZPL أصلي، مع نص بالخط 0 وCode 128 بالأمر ^BC والإطار والخط والدائرة كأشكال ZPL

تحوّل ميزة Vector-Lift ملفات PDF أو SVG الصادرة عن شركات الشحن وأنظمة ERP إلى كود ZPL حقيقي بدلًا من صورة نقطية واحدة بالأمر ^GF: تتحوّل النصوص إلى حقول ^A0، وتُفكّ ترميزات الباركودات ثم يُعاد إنشاؤها كأوامر ^B أصلية ويُتحقَّق منها، وتتحوّل الخطوط والمربعات إلى ^GB و^GC و^GE. ويأتي كل ملصق مع قيمة دقة مقيسة:

$ zplcore lift lift-label.svg -o lift.zpl --report
799x400 dots @ 203 dpi (default), fidelity 0.9785 (exact 0.9114), native ink 97.8 %, 370 bytes vs 4,140 bytes ^GF raster (8.9%)
4 native, 5 approximated, 0 raster, 1 dropped, barcodes match

تُكتب النصوص بالخط 0 بدلًا من الخط الأصلي، والنصوص الموجودة في ملف PDF على شكل مسارات خطوط فقط تبقى رسومًا (لا يوجد OCR). وفي zplCloud تستخدم هذه الميزة الأداةُ المجانية من PDF إلى ZPL أصلي. الوثائق

NativeAOT

يُبنى كلٌّ من الـ SDK وحزمة الاختبارات وأداة CLI وخادم MCP دون أي تحذيرات trim أو AOT. ويمكن نشر أداة CLI وخادم MCP كبرامج أصلية تعمل دون تثبيت بيئة تشغيل ‎.NET، ويقارن اختبار دخان (smoke test) مخرجاتها بنسخة JIT بايتًا ببايت وبكسلًا ببكسل. الوثائق

ماذا يعني ذلك لمستخدمي zplCloud

لا تحتاج إلى تثبيت أي شيء؛ فـ zplCloud يعمل اليوم بالفعل على zplCore.com:

  • أربع أدوات مجانية جديدة: فحص مطابقة الملصق وBarcode Scan-Proof وترحيل Sunrise 2027 ومن PDF إلى ZPL أصلي. والأدوات الأربع متاحة أيضًا عبر zplCloud API تحت المسار /v1/tools/….
  • المعاينة تطابق الطباعة: تُصيَّر معاينات PNG وSVG وPDF من كود ZPL نفسه الذي يُرسَل إلى الطابعة.
  • استيراد أفضل إلى المصمّم: يمرّ استيراد ZPL إلى المصمّم الآن عبر Label.FromZpl. وفي دورة التحويل الكاملة من ZPL إلى التصميم ثم إلى ZPL لجميع القوالب الـ 96 بعشر لغات، ارتفع متوسط النتيجة من 0.7707 إلى 0.9998، وارتفع عدد القوالب المطابقة بكسلًا ببكسل من 26 إلى 911 من أصل 960.
  • الأدوات التي تعرفها بالفعل مثل مدقق ZPL ومنسّق ZPL وZPL Diff وفحص الباركود تعمل بالمحرّك نفسه.

قريبًا: zplCore Server (Docker)

خطوتنا التالية هي تجهيز المحرّك في حاوية جاهزة مع REST API: يدخل ZPL، وتخرج صورة PNG أو ملف PDF أو تقرير فحص. ومن المخطَّط له: صورة متعددة المعماريات لـ linux/amd64 وlinux/arm64، بصيغة distroless، تعمل دون صلاحيات root ومع نظام ملفات للقراءة فقط، ونقاط النهاية /health و/ready و/metrics (Prometheus)، ووصف OpenAPI، وصور موقّعة مع SBOM. وفي اختبار NativeAOT الذي أجريناه على linux/arm64 بدأ الخادم في نحو 4 مللي ثانية، وصيَّر أول ملصق في نحو 11 مللي ثانية، وبلغ حجم الصورة نحو 100 ميغابايت. مجموعة الميزات لا تزال مخطَّطًا لها؛ ويمكنك عبر zplcore.com طلب إشعارك عند جاهزية الإصدار الأول.

جرّبه

  • عرض توضيحي مباشر: يُصيِّر zplcore.com/en/demo كود ZPL، ويشغّل داخل المتصفح الفحص المسبق للامتثال وScan-Proof وترحيل GS1 واستخراج البيانات مع إخفائها والتوأم الرقمي للطابعة.
  • الوثائق: zplcore.com/en/docs مع API وCLI والأمثلة والدقة والحدود المعروفة.
  • نسخة تجريبية: اطلبها عبر نموذج التواصل على zplcore.com. يردّ فريق التطوير مباشرةً، ويسعده فحص ملفات ZPL وEPL الخاصة بك. التراخيص مخصّصة لعملاء الأعمال (B2B).
  • دون كتابة كود: تعمل أدوات zplCloud المجانية بالمحرّك نفسه.

الأسئلة الشائعة

هل zplCore.com هو المحرّك نفسه الذي يستخدمه zplCloud؟

نعم. يُصيِّر zplCloud المعاينات وملفات PDF ونتائج الأدوات باستخدام zplCore.com، وتستدعي الأدوات الجديدة الوظائف نفسها التي تحصل عليها في الـ SDK.

هل يحتاج zplCore.com إلى اتصال بالإنترنت أو إلى برنامج تشغيل للطابعة؟

لا. تعمل المكتبة داخل عمليتك الخاصة، دون اتصال بالإنترنت، على Windows وLinux وmacOS. وتجري الطباعة مباشرةً عبر TCP 9100 أو المنفذ التسلسلي أو USB أو Windows spooler أو CUPS.

هل الفحص المسبق للامتثال ودرجة المسح شهادات اعتماد؟

لا. يختبر الفحص المسبق للامتثال الملصق وفق قواعد منشورة، ودرجة المسح فحص رقمي مسبق مبني على نموذج ISO/IEC 15415/15416. ولا يغني أيٌّ منهما عن موافقة شركة الشحن أو الجهة المختصة أو منظمة GS1 العضو في بلدك، ولا عن جهاز تحقق معايَر يفحص الملصق المطبوع.

ما الذي لا يستطيع zplCore.com فعله بعد؟

لم يُنفَّذ Pharmacode 2D وResponse Plus PostMatrix وHIBC وفق ISO/IEC 15434، لعدم وجود مواصفات منشورة لها. ودعم Deutsche Post BZL وJAB Code تجريبي. أما الخطوط المقيمة في طابعات Zebra فهي خطوط مملوكة، لذا تُستبدل بخطوط بديلة معايَرة؛ وإذا كنت تحتاج إلى أشكال محارف متطابقة، فسجّل ملف TTF الأصلي. والقائمة الكاملة متاحة في الحدود المعروفة.

هل عليّ تغيير أي شيء في zplCloud؟

لا. تبقى التصاميم والقوالب والطابعات واستدعاءات API كما هي.

العلامتان Zebra وZPL علامتان تجاريتان لشركة Zebra Technologies Corporation، والعلامتان GS1 وGS1 Digital Link علامتان تجاريتان لـ GS1 AISBL، أما Neodynamic وThermalLabel وZPLPrinter فهي علامات تجارية لمالكيها. وجميعها مستخدمة هنا لأغراض وصفية فقط.

مقالات أخرى