Semantičko poređenje tokova sadržaja
HPDFContentStream može da normalizuje dekodirani PDF sadržaj u ograničene kanonske događaje i uporedi te događaje bez tretiranja bezopasnih izbora serijalizacije kao promena
Deklaracije
function HPDFNormalizeContentStreamGraphicsState(
const Bytes: TBytes; out Canonical: TBytes;
out Statistics: THPDFContentSemanticStatistics;
NumberTolerance: Double = 1E-9;
MaxOperations: Integer = 1000000;
MaxCanonicalBytes: Int64 = 67108864
): boolean;
function HPDFCompareContentStreamsSemantic(
const Left, Right: TBytes;
out Info: THPDFContentSemanticCompareInfo;
NumberTolerance: Double = 1E-9;
MaxOperations: Integer = 1000000;
MaxCanonicalBytes: Int64 = 67108864
): boolean;
Normalizacija
- Brojevi se kvantizuju po toleranciji pozivaoca i emituju spelovanjem nezavisnim od lokacije
- Literalni i heksadecimalni stringovi upoređuju se po vrednosti dekodiranog bajta, dok nizovi zadržavaju tip i redosled stavke
- Postavljači stanja grafike i teksta ažuriraju efektivni snimak, a redundantni postavljači ne formiraju događaje
qiQodržavaju pun stek stanja ali sami po sebi ne postaju događaji- Uzastopni
cmoperatori množe se po PDF redosledu, tako da se ekvivalentne faktorizacije matrica upoređuju jednako - Svaki zadržani operator nosi efektivnu matricu, liniju, boju, eksternu grafiku i stanje teksta koje se primenjuje u toj tački
- Ključevi inline slika normalizuju se tokenizerom, a sadržaji koriste SHA-256 identitete radi izbegavanja proširivanja kanonskog toka
Dijagnostika i granice
THPDFContentSemanticStatistics izveštava informacije o tokenima, operacijama, operacijama stanja, redundantnom stanju, normalizovanim događajima, maksimalnoj dubini steka, kanonskim bajtovima, pomaku greške, validnosti i ograničenjima. Poređenje takođe izveštava prvi različiti normalizovani događaj
Neispravni operandi ugnježđenog rečnika, nevažeća arnost operatora stanja, neuskladni ili nezatvoreni opsezi stanja grafike, zaostali operandi, prekoračenje operacija i prekoračenje kanonskih bajtova ne uspevaju zatvoreno i nikada ne izveštavaju ekvivalenciju
Prosledite dekodirane bajtove sadržaja. Dekodiranje filtera toka i usklađivanje imena resursa kroz različite rečnike resursa ostaju odgovornost pozivaoca