文件比較

THPDFDocComparison 比較兩個已載入的 THotPDF 文件,並傳回確定性的 JSON 報告

結構比較

cmStructural 從每個文件的 catalog 開始、遵循間接參照,並從排序的字典索引鍵與陣列索引指派路徑,例如 $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