PDFium Delphi Component Docs

Provider opzionale di codici a barre ZXing

CreatePdfZXingBarcodeProvider fornisce un IPdfBarcodeProvider usando il percorso assoluto esplicito di un bridge nativo compatibile con la destinazione, compilato da ZXing-C++ 2.3.0

TryCreatePdfZXingBarcodeProvider segnala librerie o export mancanti e ABI del bridge incompatibili, senza modificare il percorso di ricerca del processo

La generazione supporta Code128, QR, DataMatrix e PDF417 e restituisce rettangoli vettoriali neri con la dimensione di modulo richiesta; Code128 accetta il proprio insieme di caratteri supportati, mentre i codici a matrice accettano testo Unicode

QuietZoneModules sposta i rettangoli neri a destra e in basso per lasciare spazio sul lato sinistro e superiore; quando si posiziona o rasterizza il risultato, occorre riservare una zona bianca libera anche a destra e in basso

Il riconoscimento accetta byte in scala di grigi da un byte, ordinati dall'alto verso il basso, con larghezza, altezza e stride espliciti; i limiti sono rettangoli di pixel semiaperti e una confidence pari a 1 indica una decodifica accettata, non una probabilità statistica

I limiti predefiniti sono 4,194,304 pixel, 32,768 byte di testo UTF-8 e 1,000,000 rettangoli vettoriali, con quiet zone 4 e livello di correzione degli errori 2

Per QR, i livelli di correzione 0–2 selezionano L, 3–4 M, 5–6 Q e 7–8 H; PDF417 usa i livelli 0–8, mentre Code128 e DataMatrix ignorano questa opzione

Il riconoscimento restituisce al massimo 255 simboli anche quando il massimo richiesto è superiore; l'interfaccia del provider esistente non prevede un token di annullamento

Le istruzioni di compilazione e l'esempio eseguibile di codifica e decodifica si trovano in Native/BarcodeZXing e Tests/BarcodeProvider; questa modifica non include binari del bridge nativo né sorgenti delle dipendenze

L'esecuzione reale con Delphi/FPC su Win32/Win64 supera 60 round trip di codifica e decodifica, inclusi rotazione, inversione e Unicode; il bridge nativo su Linux supera 15 round trip, mentre il provider Pascal resta soggetto alle dipendenze Windows del wrapper

Provider := CreatePdfZXingBarcodeProvider(
  BridgePath, TPdfZXingBarcodeOptions.Default);
Rects := GeneratePdfBarcode(pbkQr, 'Invoice 12345', 2, Provider);
Results := RecognisePdfBarcodes(Pixels, Width, Height, Stride, Provider, 256);

Dichiarazioni pubbliche

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;