文件比較
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,並以失敗關閉
比較模式
cmPageCount比較頁面數cmPageText對齊並比較抽取的頁面文字cmObjectCount保留其現有的選擇器值,現在並執行結構物件與頁面比較cmRenderedImage使用預設或呼叫端選取的選項執行感知轉譯比較cmFull結合頁面數、結構與轉譯比較cmStructural在不必轉譯的情況下執行頁面與物件圖形比較
結果格式
報告包含來源計數、遍歷遙測、正規化結構與轉譯限制、differenceCount、reportedDifferenceCount、differencesTruncated、comparisonComplete、identical 與 differences 陣列
轉譯模式也傳回 renderedPages 陣列,帶有頁面狀態、維度、度量、變更區域與可選覆疊路徑,加上彙總的轉譯頁面與像素計數
每個差異都可以包含穩定的 pathA 與 pathB 值、頁面索引、物件編號、類型與詳細字串
相關 API
THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments