PDFium Component Docs

Opcjonalny dostawca kodów kreskowych ZXing

CreatePdfZXingBarcodeProvider dostarcza IPdfBarcodeProvider, używając jawnej absolutnej ścieżki do mostka natywnego dopasowanego do celu, zbudowanego z ZXing-C++ 2.3.0

TryCreatePdfZXingBarcodeProvider raportuje brakujące biblioteki, eksporty lub niezgodne ABI mostka, nie zmieniając ścieżki wyszukiwania procesu

Generowanie obsługuje Code128, QR, DataMatrix i PDF417 oraz zwraca czarne prostokąty wektorowe w żądanym rozmiarze modułu; Code128 akceptuje swój obsługiwany zestaw znaków, a kody macierzowe obsługują tekst Unicode

QuietZoneModules odsuwa czarne prostokąty od lewej i górnej krawędzi; wywołujący musi też zarezerwować białą strefę cichą po prawej i u dołu przy pozycjonowaniu lub rastrowaniu wyniku

Rozpoznawanie przyjmuje bajty jednobajtowej skali szarości od góry do dołu oraz jawne width, height i stride; granice to półotwarte prostokąty pikselowe, a pewność 1 oznacza zaakceptowane zdekodowanie, a nie prawdopodobieństwo statystyczne

Domyślne budżety to 4,194,304 pikseli, 32,768 bajtów tekstu UTF-8 i 1,000,000 prostokątów wektorowych, ze strefą cichą 4 i poziomem korekcji błędów 2

Poziomy korekcji błędów QR 0–2 wybierają L, 3–4 M, 5–6 Q i 7–8 H; PDF417 używa poziomów 0–8; Code128 i DataMatrix ignorują tę opcję

Rozpoznawanie zwraca co najwyżej 255 symboli, nawet gdy żądane maksimum jest wyższe; istniejący interfejs dostawcy nie ma tokenu anulowania

Instrukcje budowania i działający przykład kodowania/dekodowania znajdują się w Native/BarcodeZXing i Tests/BarcodeProvider; ta zmiana nie pakuje binarnego mostka natywnego ani źródeł zależności

Rzeczywiste wykonanie Delphi/FPC Win32/Win64 przechodzi 60 cykli kodowania/dekodowania, włącznie z rotacją, inwersją i Unicode; natywny mostek Linux przechodzi 15 cykli, a dostawca Pascal pozostaje ograniczony zależnościami Windows nakładki

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

Public declarations

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;