Порівняння документів
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 і завершуються за замовчуванням із закриттям
Режими порівняння
cmPageCountпорівнює кількості сторінокcmPageTextвирівнює та порівнює добутий текст сторінокcmObjectCountзберігає своє наявне значення селектора та тепер виконує структурне порівняння об'єктів і сторінокcmRenderedImageвиконує перцептивне порівняння рендерингу за типових або обраних викликачем опційcmFullпоєднує порівняння кількості сторінок, структурне та рендерингуcmStructuralвиконує порівняння сторінок та графа об'єктів без рендерингу
Формат результату
Звіт включає кількості джерела, телеметрію обходу, нормалізовані структурні та рендерингові межі, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical та масив differences
Режими рендерингу також повертають масив renderedPages зі статусом сторінки, розмірами, метриками, зміненими регіонами та необов'язковими шляхами накладення, а також сукупні лічильники відмальованих сторінок і пікселів
Кожна різниця може включати стабільні значення pathA та pathB, індекси сторінок, номери об'єктів, тип і рядок деталей
Пов'язані API
THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments