Semantisk sammenligning af indholdsstrømme
HPDFContentStream kan normalisere afkodet PDF-indhold til afgrænsede kanoniske hændelser og sammenligne hændelserne uden at betragte uskadelige serialiseringsvalg som ændringer
Deklarationer
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;Normalisering
- Tal kvantiseres efter kalderens tolerance og udsendes med lokalitetsuafhængig stavemåde
- Literale og hexadecimale strenge sammenlignes efter afkodet byteværdi, mens arrays bevarer elementtype og rækkefølge
- Indstillinger for grafik- og teksttilstand opdaterer et effektivt snapshot, og redundante indstillinger opretter ikke hændelser
qogQvedligeholder en fuld tilstandsstak, men bliver ikke selv hændelser- Efterfølgende
cm-operatorer multipliceres i PDF-rækkefølge, så ækvivalente matrixfaktoriseringer sammenlignes ens - Hver bevaret operator indeholder den effektive matrix, linje-, farve-, ekstern grafik- og teksttilstand, der gælder på det punkt
- Inline-billednøgler normaliseres af tokenizeren, og data bruger SHA-256-identiteter for at undgå udvidelse af den kanoniske strøm
Diagnosticering og grænser
THPDFContentSemanticStatistics rapporterer token-, operation-, tilstandsoperation-, redundant tilstand-, normaliseret hændelse-, maksimal stakdybde-, kanonisk byte-, fejlforskydning-, gyldigheds- og grænseoplysninger. Sammenligningen rapporterer også den første afvigende normaliserede hændelse
Fejldannede indlejrede ordbogsoperander, ugyldig aritet for tilstandsoperatorer, umatchede eller ikke-lukkede grafiktilstandsafgrænsninger, efterfølgende operander, operationsoverskridelse og overskridelse af kanoniske byte fejler lukket og rapporterer aldrig ækvivalens
Overfør afkodede indholdsbytes. Afkodning af strømfiltre og afstemning af ressourcenavne mellem forskellige ressourceordbøger forbliver kalderens ansvar