CreatePdfZXingBarcodeProvider leverer en IPdfBarcodeProvider via en udtrykkelig absolut sti til en native bridge bygget fra ZXing-C++ 2.3.0 til den rigtige målplatform
TryCreatePdfZXingBarcodeProvider rapporterer manglende biblioteker, exports eller en inkompatibel bridge-ABI uden at ændre processens søgesti
Generering understøtter Code128, QR, DataMatrix og PDF417 og returnerer sorte vektorrektangler i den ønskede modulstørrelse; Code128 accepterer sit understøttede tegnsæt, mens matrixkoder understøtter Unicode-tekst
QuietZoneModules forskyder de sorte rektangler fra venstre og toppen; ved placering eller rasterisering skal du også reservere en hvid quiet zone til højre og forneden
Genkendelse modtager top-down grayscale-bytes med én byte pr. pixel samt eksplicit bredde, højde og stride; grænserne er halvåbne pixelrektangler, og confidence 1 betyder en accepteret afkodning, ikke en statistisk sandsynlighed
Standardgrænserne er 4,194,304 pixels, 32,768 bytes UTF-8-tekst og 1,000,000 vektorrektangler, med quiet zone 4 og fejlkorrektionsniveau 2
QR-niveauerne 0–2 vælger L, 3–4 M, 5–6 Q og 7–8 H; PDF417 bruger 0–8, mens Code128 og DataMatrix ignorerer indstillingen
Genkendelse returnerer højst 255 symboler, selv med et højere ønsket maksimum; det eksisterende provider-interface har intet cancellation token
Build-vejledning og et kørbart encode/decode-eksempel findes i Native/BarcodeZXing og Tests/BarcodeProvider; ændringen inkluderer hverken native bridge-binærfiler eller kildekode til afhængigheder
Reel Delphi/FPC-kørsel på Win32/Win64 består 60 round trips, herunder rotation, inversion og Unicode; native Linux bridge-kørsel består 15 round trips, mens Pascal-provideren stadig er underlagt wrapperens Windows-afhængigheder
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;