PDFium Delphi Component Docs

Proveedor opcional de códigos de barras ZXing

CreatePdfZXingBarcodeProvider proporciona un IPdfBarcodeProvider mediante una ruta absoluta explícita a un puente nativo compilado con ZXing-C++ 2.3.0 para la plataforma de destino

TryCreatePdfZXingBarcodeProvider informa si faltan bibliotecas o exports, o si la ABI del puente es incompatible, 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 conjunto de caracteres admitido, mientras que los códigos matriciales permiten texto Unicode

QuietZoneModules desplaza los rectángulos negros hacia la derecha y hacia abajo para dejar margen a la izquierda y arriba; al colocar o rasterizar el resultado, también hay que reservar una zona blanca de silencio a la derecha y abajo

El reconocimiento recibe píxeles en escala de grises de un byte, ordenados de arriba hacia abajo, con ancho, alto y stride explícitos; los límites son rectángulos de píxeles semiabiertos y una confianza de 1 indica una decodificación aceptada, no una probabilidad estadística

Los límites predeterminados son 4,194,304 píxeles, 32,768 bytes de texto UTF-8 y 1,000,000 rectángulos vectoriales, con zona de silencio de 4 módulos y nivel de corrección de errores 2

En QR, los niveles de corrección de errores 0–2 seleccionan L, 3–4 M, 5–6 Q y 7–8 H; PDF417 usa niveles 0–8; Code128 y DataMatrix ignoran esta opción

El reconocimiento devuelve como máximo 255 símbolos, aunque se soliciten más; la interfaz actual del proveedor no incluye un token de cancelación

Las instrucciones de compilación y el ejemplo ejecutable de codificación y decodificación están en Native/BarcodeZXing y Tests/BarcodeProvider; este cambio no incluye el binario del puente nativo ni el código fuente de sus dependencias

La ejecución real con Delphi/FPC en Win32/Win64 supera 60 pruebas de ida y vuelta de codificación y decodificación, incluidas rotación, inversión y Unicode; el puente nativo en Linux supera 15 pruebas de ida y vuelta, aunque el proveedor Pascal sigue sujeto a las dependencias de 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;