PDFium Delphi Component Docs

Fornecedor opcional de códigos de barras com ZXing

CreatePdfZXingBarcodeProvider disponibiliza um IPdfBarcodeProvider usando um caminho absoluto explícito para uma ponte nativa compatível com o alvo, compilada a partir do ZXing-C++ 2.3.0

TryCreatePdfZXingBarcodeProvider comunica bibliotecas, exports ou ABI de ponte incompatíveis em falta sem alterar o search path do processo

A geração suporta Code128, QR, DataMatrix e PDF417 e devolve retângulos vetoriais pretos no tamanho de módulo pedido; o Code128 aceita o seu conjunto de caracteres suportado, enquanto os códigos de matriz suportam texto Unicode

QuietZoneModules desloca os retângulos pretos à esquerda e no topo; o chamador também tem de reservar uma zona de silêncio branca à direita e em baixo ao posicionar ou rasterizar o resultado

O reconhecimento aceita bytes em tons de cinzento de um byte, de cima para baixo, com largura, altura e stride explícitos; os limites são retângulos de píxeis semiabertos e confiança 1 significa uma descodificação aceite, e não uma probabilidade estatística

Os orçamentos predefinidos são 4,194,304 píxeis, 32,768 bytes de texto UTF-8 e 1,000,000 retângulos vetoriais, com zona de silêncio 4 e nível de correção de erros 2

Os níveis de correção de erros do QR de 0–2 selecionam L, 3–4 M, 5–6 Q e 7–8 H; o PDF417 usa os níveis 0–8; Code128 e DataMatrix ignoram esta opção

O reconhecimento devolve no máximo 255 símbolos, mesmo quando o máximo pedido é superior; a interface existente do fornecedor não tem token de cancelamento

As instruções de compilação e o exemplo executável de encode/decode estão em Native/BarcodeZXing e Tests/BarcodeProvider; nenhum binário de ponte nativa ou código-fonte de dependência é empacotado por esta alteração

A execução real em Delphi/FPC Win32/Win64 passa 60 ciclos de encode/decode, incluindo rotação, inversão e Unicode; a execução da ponte nativa em Linux passa 15 ciclos, enquanto o fornecedor Pascal continua sujeito às dependências Windows do wrapper

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

Declarações 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;