توفر CreatePdfZXingBarcodeProvider واجهة IPdfBarcodeProvider باستخدام مسار مطلق وصريح إلى bridge أصلي مطابق للهدف ومبني من ZXing-C++ 2.3.0
تبلغ TryCreatePdfZXingBarcodeProvider عن المكتبات أو الرموز المصدّرة المفقودة أو ABI غير المتوافق، دون تغيير مسار البحث الخاص بالعملية
يدعم التوليد Code128 و QR و DataMatrix و PDF417، ويعيد مستطيلات متجهية سوداء بحجم الوحدة المطلوب؛ يقبل Code128 مجموعة محارفه المدعومة، بينما تدعم الرموز المصفوفية نص Unicode
تزحزح QuietZoneModules المستطيلات السوداء عن الحافتين اليسرى والعليا؛ على المستدعي أيضًا حجز منطقة هادئة بيضاء يمينًا وأسفلًا عند وضع النتيجة أو تحويلها إلى صورة
يقبل التعرف بايتات رمادية مرتبة من الأعلى إلى الأسفل، ببايت واحد لكل بكسل، مع عرض وارتفاع و stride صريحة؛ الحدود مستطيلات بكسلية نصف مفتوحة، والثقة 1 تعني قبول فك الرمز وليست احتمالًا إحصائيًا
الميزانيات الافتراضية هي 4,194,304 بكسل و 32,768 بايت نص UTF-8 و 1,000,000 مستطيل متجهي، مع منطقة هادئة 4 ومستوى تصحيح خطأ 2
تختار مستويات QR 0–2 المستوى L و 3–4 المستوى M و 5–6 المستوى Q و 7–8 المستوى H؛ يستخدم PDF417 مستويات 0–8، ويتجاهل Code128 و DataMatrix هذا الخيار
يعيد التعرف 255 رمزًا كحد أقصى حتى لو طُلب عدد أكبر؛ لا تحتوي واجهة الموفر الحالية على Cancellation Token
تعليمات البناء ومثال الترميز وفك الترميز القابل للتشغيل موجودة في Native/BarcodeZXing و Tests/BarcodeProvider؛ لا يرفق هذا التغيير ملف bridge أصليًا ثنائيًا أو مصادر التبعيات
ينجح التشغيل الفعلي بـ Delphi/FPC على Win32/Win64 في 60 دورة ترميز وفك ترميز تشمل الدوران والعكس و Unicode؛ ينجح bridge الأصلي على Linux في 15 دورة، بينما يبقى موفر Pascal خاضعًا لتبعيات Windows الخاصة بالغلاف
Provider := CreatePdfZXingBarcodeProvider( BridgePath, TPdfZXingBarcodeOptions.Default); Rects := GeneratePdfBarcode(pbkQr, 'Invoice 12345', 2, Provider); Results := RecognisePdfBarcodes(Pixels, Width, Height, Stride, Provider, 256);
type
EPdfBarcodeBackendError = class(EPdfProduction);
TPdfZXingBarcodeOptions = record
MaxPixels: Int64;
MaxTextBytes: Integer;
MaxRectangles: Integer;
QuietZoneModules: Integer;
ErrorCorrectionLevel: Integer;
class function Default: TPdfZXingBarcodeOptions; static;
end;
// Recognition accepts top-down, one-byte grayscale pixels with explicit stride
// Bounds are half-open pixel rectangles; Confidence=1 denotes a valid decode
// The backend does not supply a statistical confidence estimate
// A recognition call returns at most 255 symbols, even with a higher requested limit
function CreatePdfZXingBarcodeProvider(const BridgeLibraryPath: string;
const Options: TPdfZXingBarcodeOptions): IPdfBarcodeProvider;
function TryCreatePdfZXingBarcodeProvider(const BridgeLibraryPath: string;
const Options: TPdfZXingBarcodeOptions; out Provider: IPdfBarcodeProvider;
out ErrorMessage: string): Boolean;