PDFium Delphi Component Docs

Optionele ZXing-barcodeprovider

CreatePdfZXingBarcodeProvider levert een IPdfBarcodeProvider op basis van een expliciet absoluut pad naar een native bridge die bij het doelplatform past en op basis van ZXing-C++ 2.3.0 is gebouwd

TryCreatePdfZXingBarcodeProvider meldt ontbrekende bibliotheken, exports of een incompatibele bridge-ABI, zonder het zoekpad van het proces te wijzigen

Generatie ondersteunt Code128, QR, DataMatrix en PDF417 en geeft zwarte vectorrechthoeken terug in de gevraagde modulegrootte; Code128 accepteert zijn ondersteunde tekenset, matrixcodes ondersteunen Unicode-tekst

QuietZoneModules verschuift zwarte rechthoeken links en boven; aanroepers moeten bij plaatsing of rasterisatie zelf ook rechts en onder een witte stille zone reserveren

Herkenning accepteert bovenaan-beginnende grijswaardebytes van één byte met expliciete breedte, hoogte en stride; grenzen zijn halfopen pixelrechthoeken en confidence 1 betekent een geaccepteerde decode, geen statistische kans

Standaardbudgetten zijn 4,194,304 pixels, 32,768 UTF-8-tekstbytes en 1,000,000 vectorrechthoeken, met stille zone 4 en foutcorrectieniveau 2

QR-foutcorrectieniveaus 0–2 kiezen L, 3–4 M, 5–6 Q en 7–8 H; PDF417 gebruikt niveaus 0–8; Code128 en DataMatrix negeren deze optie

Herkenning geeft maximaal 255 symbolen terug, ook wanneer een hoger maximum is gevraagd; de bestaande providerinterface kent geen cancellation token

Bouwinstructies en het uitvoerbare encode/decode-voorbeeld staan in Native/BarcodeZXing en Tests/BarcodeProvider; deze wijziging bundelt geen native bridge-binary of afhankelijkheidsbron

Echte Delphi/FPC Win32/Win64-uitvoering doorloopt 60 encode/decode-roundtrips, inclusief rotatie, inversie en Unicode; native Linux-bridge-uitvoering doorloopt 15 roundtrips, terwijl de Pascal-provider nog steeds onder de Windows-afhankelijkheden van de wrapper valt

Provider := CreatePdfZXingBarcodeProvider(
  BridgePath, TPdfZXingBarcodeOptions.Default);
Rects := GeneratePdfBarcode(pbkQr, 'Invoice 12345', 2, Provider);
Results := RecognisePdfBarcodes(Pixels, Width, Height, Stride, Provider, 256);

Public declarations

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;