PDFium Delphi Component Docs

Proveedor opcional de códigos de barras con ZXing

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

Declaraciones públicas

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;