Порівняння документів

THPDFDocComparison порівнює два завантажені документи THotPDF та повертає детермінований звіт JSON

Структурне порівняння

cmStructural починає з каталогу кожного документа, слідує за непрямими посиланнями та призначає шляхи з відсортованих ключів словників та індексів масивів, як-от $Catalog/Pages/Kids[0]/Contents

Скалярні значення та декодовані байти потоків хешуються SHA-256, тому великі потоки порівнюються інкрементально без матеріалізації ще однієї повної копії

Об'єкти з однаковим шляхом, але різними підписами звітуються як objectChanged; однакові підписи на різних шляхах - як objectMoved; решта незіставлених об'єктів - як objectInserted або objectDeleted

Вирівнювання сторінок

Сторінки з текстом, що добувається, використовують семантичний текстовий підпис для вирівнювання та звертаються до структурного підпису, коли текст порожній або недоступний

Прохід найдовшої зростаючої підпослідовності зберігає порядок сторінок через вставки та видалення, звітуючи справжнє переупорядкування як pageMoved

Не зіставлені вирівняні сторінки стають pageChanged, pageInserted або pageDeleted; метадані сторінки підписуються незалежно від /Parent, /Contents та /Resources, щоб уникнути шуму кодування підмножин шрифтів

Порівняння рендерингу

cmRenderedImage та cmFull відмальовують спільні сторінки за налаштованого DPI та проходять кожен растровий образ один раз, щоб обчислити змінені пікселі, коефіцієнт змінених пікселів, середню абсолютну помилку кольору, максимальний колірний дельта та глобальний оцінку яскравості у стилі SSIM

THPDFRenderedCompareOptions обирає різницю RGB чи яскравості, допуск кольору на піксель, мінімальну схожість, максимальний коефіцієнт змінених пікселів, розмір плиток, збереження змінених регіонів, бюджети пікселів та необов'язкові накладання PNG

Сторінка схожа лише тоді, коли проходять і коефіцієнт змінених пікселів, і затвори схожості; метрики обчислюються з повною точністю та округлюються до шести знаків після коми лише для детермінованого звітування JSON

Змінені плитки з'єднуються в детерміновані регіони чотирьох зв'язків та звітуються з межами у просторі пікселів, лічильниками змінених пікселів і максимальними колірними дельтами

Коли теплові карти ввімкнено, змінені пікселі змішуються від жовтого до червоного поверх документа A та зберігаються як файли стилю page-000001-diff.png у вибраному викликачем каталозі

Межі та повнота

THPDFStructuralCompareLimits керує межами об'єктів, ребер, сторінок, глибини, різниць, байтів потоків, байтів значень і байтів шляхів

Якщо обхід досягає межі, звіт включає comparisonBudget, встановлює comparisonComplete у false і не може звітувати документи як ідентичні

Робота рендерингу оцінюється до виділення та обмежується на сторінку та на порівняння; збої рендерингу, виділення чи накладання додають renderBudget або renderError, встановлюють renderComparisonComplete та comparisonComplete у false і завершуються за замовчуванням із закриттям

Режими порівняння

Формат результату

Звіт включає кількості джерела, телеметрію обходу, нормалізовані структурні та рендерингові межі, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical та масив differences

Режими рендерингу також повертають масив renderedPages зі статусом сторінки, розмірами, метриками, зміненими регіонами та необов'язковими шляхами накладення, а також сукупні лічильники відмальованих сторінок і пікселів

Кожна різниця може включати стабільні значення pathA та pathB, індекси сторінок, номери об'єктів, тип і рядок деталей

Пов'язані API

THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments