استكشاف الأخطاء وإصلاحها Aspose.BarCode FOSS for Python
يغطي هذا الدليل أكثر الأخطاء والمشكلات شيوعًا عند إنشاء الرموز الشريطية باستخدام Aspose.BarCode FOSS لـ Python. يصف كل قسم الخطأ وسببه وكيفية إصلاحه.
الأخطاء الشائعة
InvalidInputError
يتم رفع InvalidInputError عندما لا تتطابق البيانات الممررة إلى المرمّز مع مجموعة الأحرف أو متطلبات الطول للرمزية.
****الأسباب الشائعة::
- تمرير أحرف أبجدية إلى رمزية رقمية فقط (EAN-13, EAN-8, UPC-A, UPC-E)
- توفير سلسلة لا يتطابق طولها مع متطلبات الطول الثابت للرمزية (مثال: EAN-13 يتطلب بالضبط 12 أو 13 رقمًا)
- تضمين أحرف خارج مجموعة الرموز المدعومة (مثال: وضع Code 39 الأساسي يدعم فقط الأحرف الكبيرة، الأرقام، وبعض الأحرف الخاصة القليلة)
إصلاح: تحقق من صحة بيانات الإدخال الخاصة بك قبل الاستدعاء BarcodeService.generate(). تحقق من ملف تعريف الرموز الخاص بـ capabilities and known_limitations الخصائص الخاصة بمجموعة الأحرف وقيود الطول.
from aspose_barcode_foss import BarcodeService
service = BarcodeService()
# EAN-13 requires exactly 12 or 13 digits
data = "590123412345" # 12 digits — valid
barcode = service.generate("ean13", data)EncodingError
يتم رفع EncodingError عندما يواجه المشفر فشلًا داخليًا بعد نجاح التحقق من صحة الإدخال. هذا أقل شيوعًا من InvalidInputError.
****الأسباب الشائعة::
- البيانات التي تجتاز التحقق الأولي لكنها تفشل أثناء ترميز الجزء (مثال: بيانات QR Code التي تتجاوز السعة لمستوى تصحيح الخطأ المختار)
- خيارات الترميز المتضاربة (مثال: طلب
Code128EncodeMode.CODE_Aببيانات تحتوي على أحرف صغيرة)
إصلاح: راجع خيارات الترميز الممررة إلى generate(). بالنسبة إلى Code 128، استخدم Code128EncodeMode.AUTO للسماح للمرمز باختيار المجموعة الفرعية المثلى. بالنسبة إلى QR Code، جرّب قيمة أقل QrErrorCorrectionLevel أو تقليل طول البيانات.
from aspose_barcode_foss import BarcodeService, Code128Options, Code128EncodeMode
service = BarcodeService()
options = Code128Options(encode_mode=Code128EncodeMode.AUTO)
barcode = service.generate("code128", "Hello123", encode=options)SymbologyNotFoundError
SymbologyNotFoundError يتم رفعه عندما لا يكون اسم الترميز الممرر إلى BarcodeService.generate() مسجلاً في SymbologyRegistry.
****الأسباب الشائعة::
- اسم الترميز مكتوب بشكل خاطئ (مثال:
"code_128"بدلاً من"code128") - استخدام ترميز غير مدعوم من قبل المكتبة (المكتبة تدعم فقط Code 128، Code 39، EAN-13، EAN-8، QR Code، UPC-A، و UPC-E)
إصلاح: استخدم أحد معرفات الرموز السبعة المدعومة: "code128", "code39", "ean13", "ean8", "qrcode", "upca", "upce". الأسماء غير حساسة لحالة الأحرف ولكن يجب أن تتطابق مع المعرفات المسجلة.
from aspose_barcode_foss import BarcodeService
service = BarcodeService()
# Correct symbology names
barcode = service.generate("code128", "ABC-123")
barcode = service.generate("qrcode", "https://example.com")RenderingError
RenderingError يتم رفعه عندما يفشل المكوّن في إنتاج مخرجات من رمز مُشفَّر.
****الأسباب النموذجية::
- قيم
RenderOptionsغير صالحة (مثلاًscaleسلبية أوmodule_width) - محاولة استخدام
PdfRenderer(يؤدي عرض PDF إلى رفعNotImplementedErrorفي الإصدار الحالي)
إصلاح: استخدم SvgRenderer or PngRenderer بدلاً من PdfRenderer. تحقق من أن RenderOptions الخصائص لها قيم موجبة صالحة.
from aspose_barcode_foss import BarcodeService, RenderOptions
from aspose_barcode_foss.rendering import SvgRenderer
service = BarcodeService()
barcode = service.generate("ean13", "590123412345")
options = RenderOptions(scale=2.0, dpi=300)
result = barcode.render(SvgRenderer(), options)UnsupportedCapabilityError و UnsupportedFeatureError
يتم رفع UnsupportedCapabilityError عندما لا تدعم الرموز القدرة المطلوبة (مثلاً وضع GS1 لرمز يفتقر إلى دعم GS1). يتم رفع UnsupportedFeatureError للميزات غير المطبقة في المكتبة.
إصلاح: تحقق من ملف تعريف الترميز الخاص بـ capabilities الخاصية لتأكيد أي الميزات متاحة. تجنب طلب وضع GS1 للرموز التي لا تدعمها.
مشكلات البيئة
إصدار Python
Aspose.BarCode FOSS يتطلب Python 3.12 أو أحدث. إذا رأيت SyntaxError أو فشل في الاستيراد، تحقق من إصدار Python الخاص بك:
python --versionمشكلات التثبيت
قم ببناء الحزمة من المصدر.
المكتبة هي Python صافية دون أي تبعيات أصلية. إذا نجح التثبيت ولكن فشل الاستيراد، تحقق من أنك لا تُظلل الحزمة بملف محلي يُدعى aspose_barcode_foss.py.
أخطاء الاستيراد
الاستيراد الصحيح هو:
import aspose_barcode_fossأو استورد الفئات المحددة:
from aspose_barcode_foss import BarcodeService, RenderOptionsالأسئلة المتكررة
لماذا يظهر رمز EAN-13 الشريطي رقمًا مختلفًا عما أدخلته؟
EAN-13 تحسب رقم التحقق تلقائيًا. إذا قمت بتمرير 12 رقمًا، يتم إلحاق الرقم الـ13. إذا قمت بتمرير 13 رقمًا، يتم التحقق من أن الرقم الأخير هو رقم التحقق. استخدم خاصية Ean13Options allow_check_digit_input للتحكم في هذا السلوك.
لماذا يثير إخراج PDF NotImplementedError؟
PdfRenderer.render() و Barcode.to_pdf() لم يتم تنفيذها بعد. استخدم Barcode.to_svg() أو Barcode.to_png() بدلاً من ذلك، أو قم بالعرض باستخدام SvgRenderer أو PngRenderer مباشرة.
كيف يمكنني استكشاف الأخطاء ومعرفة أسماء الرموز المتاحة؟
استخدم SymbologyRegistry.get_definition() للتحقق مما إذا كان رمز رمزي مسجلاً. إذا أثار SymbologyNotFoundError، فإن الرمز غير متاح. الرموز السبع المدعومة هي: Code 128، Code 39، EAN-13، EAN-8، QR Code، UPC-A، و UPC-E.