CreatePdfZXingBarcodeProvider proporciona un IPdfBarcodeProvider a partir de una ruta absoluta explícita a un bridge nativo compilado con ZXing-C++ 2.3.0 para la plataforma de destino
TryCreatePdfZXingBarcodeProvider informa de bibliotecas o exports ausentes y de una ABI incompatible del bridge sin modificar la ruta de búsqueda del proceso
La generación admite Code128, QR, DataMatrix y PDF417 y devuelve rectángulos vectoriales negros con el tamaño de módulo solicitado; Code128 acepta su juego de caracteres compatible y los códigos matriciales admiten texto Unicode
QuietZoneModules desplaza los rectángulos negros desde los bordes izquierdo y superior; al colocar o rasterizar el resultado también hay que reservar una zona blanca de silencio a la derecha y abajo
El reconocimiento acepta bytes grayscale de un byte por píxel, con filas de arriba abajo y anchura, altura y stride explícitos; los límites son rectángulos de píxeles semiabiertos y confidence 1 indica una decodificación aceptada, no una probabilidad estadística
Los límites por defecto son 4,194,304 píxeles, 32,768 bytes de texto UTF-8 y 1,000,000 rectángulos vectoriales, con zona de silencio 4 y nivel de corrección de errores 2
En QR, los niveles 0–2 seleccionan L, 3–4 M, 5–6 Q y 7–8 H; PDF417 utiliza 0–8, mientras que Code128 y DataMatrix ignoran esta opción
El reconocimiento devuelve como máximo 255 símbolos aunque se soliciten más; el interfaz actual del proveedor no dispone de cancellation token
Las instrucciones de compilación y el ejemplo ejecutable de codificación/decodificación están en Native/BarcodeZXing y Tests/BarcodeProvider; este cambio no incluye binarios del bridge nativo ni código fuente de sus dependencias
La ejecución real con Delphi/FPC en Win32/Win64 supera 60 recorridos de codificación y decodificación, incluidos giro, inversión y Unicode; el bridge nativo de Linux supera 15 recorridos, aunque el proveedor Pascal sigue sujeto a las dependencias Windows del wrapper
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;