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);
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;