CreatePdfZXingBarcodeProvider supplies an IPdfBarcodeProvider using an explicit absolute path to a target-matched native bridge built from ZXing-C++ 2.3.0
TryCreatePdfZXingBarcodeProvider reports missing libraries, exports or incompatible bridge ABI without changing the process search path
Generation supports Code128, QR, DataMatrix and PDF417 and returns black vector rectangles in the requested module size; Code128 accepts its supported character set while matrix codes support Unicode text
QuietZoneModules offsets black rectangles on the left and top; callers must also reserve a white quiet zone on the right and bottom when placing or rasterizing the result
Recognition accepts top-down one-byte grayscale bytes, explicit width, height and stride; bounds are half-open pixel rectangles and confidence 1 means an accepted decode rather than a statistical probability
Default budgets are 4,194,304 pixels, 32,768 UTF-8 text bytes and 1,000,000 vector rectangles, with quiet zone 4 and error-correction level 2
QR error-correction levels 0–2 select L, 3–4 M, 5–6 Q and 7–8 H; PDF417 uses levels 0–8; Code128 and DataMatrix ignore this option
Recognition returns at most 255 symbols even when the requested maximum is higher; the existing provider interface has no cancellation token
Build instructions and the runnable encode/decode example are in Native/BarcodeZXing and Tests/BarcodeProvider; no native bridge binary or dependency source is bundled by this change
Real Delphi/FPC Win32/Win64 execution passes 60 encode/decode round trips, including rotation, inversion and Unicode; native Linux bridge execution passes 15 round trips, while the Pascal provider remains subject to the wrapper's Windows dependencies
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;