Semantische vergelijking van contentstromen
HPDFContentStream kan gedecodeerde PDF-inhoud normaliseren in begrensde canonieke gebeurtenissen en die gebeurtenissen vergelijken zonder onschuldige serialisatiekeuzes als wijzigingen te behandelen
Declaraties
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;
Normalisatie
- Getallen worden gekwantiseerd door de tolerantie van de aanroeper en uitgezonden met onafhankelijke-locale-spelling
- Letterlijke en hexadecimale strings vergelijken op gedecodeerde bytewaarde, terwijl arrays itemtype en -volgorde behouden
- Grafische- en tekststatus-setters werken een effectieve snapshot bij en overbodige setters creƫren geen gebeurtenissen
qenQonderhouden een volledige statusstack maar worden zelf geen gebeurtenissen- Opeenvolgende
cm-operatoren worden vermenigvuldigd in PDF-volgorde, zodat gelijkwaardige matrixfactorisaties gelijk vergelijken - Elke behouden operator draagt de effectieve matrix-, lijn-, kleur-, externe grafische- en tekststatus die op dat punt van toepassing is
- Inline-beeldtoetsen worden genormaliseerd door de tokenizer en payloads gebruiken SHA-256-identiteiten om canonieke-stroomuitbreiding te vermijden
Diagnostiek en grenzen
THPDFContentSemanticStatistics rapporteert token-, bewerkings-, statusbewerkings-, overbodige-status-, genormaliseerde-gebeurtenis-, maximum-Stackdiepte-, canonieke-byte-, foutoffset-, geldigheid- en limietinformatie. Vergelijking rapporteert ook de eerste verschillend genormaliseerde gebeurtenis
Ongeldige geneste woordenlijstoperanden, ongeldige statusoperator-arity, niet-overeenkomende of niet-gesloten grafische-statusscopes, volgoperanden, bewerkingsoverflow en canonieke-byte-overflow falen veilig en rapporteren nooit gelijkwaardigheid
Geef gedecodeerde contentbytes door. Stroomfilter-decodering en resource-naam-jaarsomen over verschillende resource-woordenlijsten blijven de verantwoordelijkheid van de aanroeper