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);
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;