PDFium Delphi Component Docs

Fournisseur de codes-barres ZXing optionnel

CreatePdfZXingBarcodeProvider fournit un IPdfBarcodeProvider à partir du chemin absolu explicite d’un pont natif compilé avec ZXing-C++ 2.3.0 et adapté à la cible

TryCreatePdfZXingBarcodeProvider signale les bibliothèques ou exports manquants et les incompatibilités d’ABI du pont, sans modifier le chemin de recherche du processus

La génération prend en charge Code128, QR, DataMatrix et PDF417 et renvoie des rectangles vectoriels noirs à la taille de module demandée ; Code128 accepte son jeu de caractères, tandis que les codes matriciels prennent en charge le texte Unicode

QuietZoneModules décale les rectangles noirs à gauche et en haut ; lors du placement ou de la rastérisation, l’appelant doit aussi réserver une zone blanche à droite et en bas

La reconnaissance reçoit des octets de niveaux de gris à un octet, rangés de haut en bas, avec largeur, hauteur et stride explicites ; les limites sont des rectangles de pixels semi-ouverts, et une confiance de 1 signifie un décodage accepté, pas une probabilité statistique

Les limites par défaut sont de 4,194,304 pixels, 32,768 octets de texte UTF-8 et 1,000,000 rectangles vectoriels, avec une zone de silence de 4 et un niveau de correction d’erreurs de 2

Pour QR, les niveaux 0–2 sélectionnent L, 3–4 M, 5–6 Q et 7–8 H ; PDF417 utilise 0–8 ; Code128 et DataMatrix ignorent cette option

La reconnaissance renvoie au plus 255 symboles, même si le maximum demandé est supérieur ; l’interface actuelle du fournisseur n’a pas de jeton d’annulation

Les instructions de compilation et l’exemple exécutable d’encodage/décodage se trouvent dans Native/BarcodeZXing et Tests/BarcodeProvider ; cette modification n’inclut ni binaire du pont natif ni sources des dépendances

Les exécutions réelles Delphi/FPC Win32/Win64 valident 60 allers-retours d’encodage/décodage, dont rotation, inversion et Unicode ; le pont natif Linux en valide 15, mais le fournisseur Pascal reste soumis aux dépendances Windows du wrapper

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

Déclarations publiques

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;