PDFium Delphi Component Docs

موفر ZXing اختياري للباركود

توفر 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;