PDFium Delphi Component Docs

Optionaler ZXing-Barcode-Provider

CreatePdfZXingBarcodeProvider stellt einen IPdfBarcodeProvider bereit, mit einem expliziten absoluten Pfad zu einer passenden nativen Bridge aus ZXing-C++ 2.3.0

TryCreatePdfZXingBarcodeProvider meldet fehlende Bibliotheken, Exporte oder eine inkompatible Bridge-ABI, ohne den Suchpfad des Prozesses zu ändern

Die Erzeugung unterstützt Code128, QR, DataMatrix und PDF417 und liefert schwarze Vektorrechtecke in der gewünschten Modulgröße ; Code128 akzeptiert seinen unterstützten Zeichensatz, Matrixcodes unterstützen Unicode-Text

QuietZoneModules versetzt die schwarzen Rechtecke nach rechts und unten ; beim Platzieren oder Rastern muss der Aufrufer auch rechts und unten eine weiße Ruhezone vorsehen

Die Erkennung erwartet von oben nach unten angeordnete Graustufenbytes mit einem Byte pro Pixel sowie explizite Breite, Höhe und Zeilenabstand ; Grenzen sind halboffene Pixelrechtecke, und Konfidenz 1 steht für eine akzeptierte Decodierung, keine statistische Wahrscheinlichkeit

Die Standardbudgets betragen 4,194,304 Pixel, 32,768 UTF-8-Textbytes und 1,000,000 Vektorrechtecke, mit Ruhezone 4 und Fehlerkorrekturstufe 2

QR-Stufen 0–2 wählen L, 3–4 M, 5–6 Q und 7–8 H ; PDF417 verwendet 0–8 ; Code128 und DataMatrix ignorieren diese Option

Die Erkennung liefert höchstens 255 Symbole, auch wenn ein höheres Maximum angefordert wird ; die bestehende Provider-Schnittstelle hat kein Cancellation Token

Build-Anleitung und ausführbares Codier-/Decodierbeispiel liegen unter Native/BarcodeZXing und Tests/BarcodeProvider ; diese Änderung liefert weder eine native Bridge-Binärdatei noch Abhängigkeitsquellcode mit

Die reale Delphi/FPC-Ausführung unter Win32/Win64 besteht 60 Codier-/Decodierdurchläufe einschließlich Rotation, Invertierung und Unicode ; die native Linux-Bridge besteht 15 Durchläufe, während der Pascal-Provider weiterhin den Windows-Abhängigkeiten des Wrappers unterliegt

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

Öffentliche Deklarationen

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;