Семантичне порівняння потоків вмісту
HPDFContentStream може нормалізувати декодований вміст PDF у обмежені канонічні події та порівнювати ці події, не вважаючи нешкідливі варіанти серіалізації змінами
Оголошення
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;
Нормалізація
- Числа квантуються за допуском викликаючого коду та виводяться з незалежним від локалі написанням
- Буквальні та шістнадцяткові рядки порівнюються за декодованим значенням байтів, тоді як масиви зберігають тип і порядок елементів
- Сетер стану графіки та тексту оновлює ефективний знімок, а надлишкові сетери не створюють подій
qіQпідтримують повний стек стану, але самі по собі не стають подіями- Послідовні оператори
cmперемножуються в порядку PDF, тому еквівалентні розклади матриці порівнюються однаково - Кожен збережений оператор несе ефективний стан матриці, лінії, кольору, зовнішньої графіки та тексту, який застосовується в цій точці
- Ключі вбудованих зображень нормалізуються токенізатором, а корисні навантаження використовують ідентичності SHA-256, щоб уникнути розширення канонічного потоку
Діагностика та межі
THPDFContentSemanticStatistics повідомляє інформацію про токени, операції, операції стану, надлишковий стан, нормалізовані події, максимальну глибину стека, канонічні байти, зсув помилки, дійсність та межі. Порівняння також повідомляє першу різну нормалізовану подію
Пошкоджені вкладені словники-операнди, недійсна арність оператора стану, непарні або незакриті області стану графіки, кінцеві операнди, переповнення операцій і переповнення канонічних байтів закриваються на збій і ніколи не повідомляють про еквівалентність
Передавайте декодовані байти вмісту. Декодування фільтрів потоку та узгодження імен ресурсів у різних словниках ресурсів залишаються відповідальністю викликаючого коду