原生 Linux 合約比對
hpdf_document_compare_json_v1 借用兩個已載入的文件 handle,執行原生語意合約比對或一般文件比對,並透過 callback 產生備妥的輸出
{"schemaVersion":1,"type":"compare.contract","format":"html",
"title":"Contract review","options":{"granularity":"word",
"ignoreRepeatedHeadersFooters":true,"maxAlignmentCells":2000000},
"limits":{"memoryBytes":268435456,"resultBytes":4194304,"outputBytes":8388608}}
語意合約報告
原生 adapter 使用與 Windows 合約 API 相同的可攜式段落對齊與差異演算法,包括單字或句子變更、跨頁移動、重複邊界排除、樣板文字篩選與頁面續行
合約報告包含 comparisonComplete、identical、differenceCount、頁數與段落數、排除項、工作與對齊計數器,以及每個變更的文字、context 與位置
每個位置包含以零為基底的頁碼與段落、以一為基底的字元位移、字元數,以及覆蓋相交語意行的 PDF 使用者空間矩形;矩形代表的是行幾何
原生 glyph 擷取保留巢狀 Form 資源與矩陣、繼承的頁面邊界,以及純文字與已驗證 AES R5/R6 輸入的擷取權限;沒有可擷取文字的頁面會回報擷取失敗,需要 OCR 或明確的空白頁移除
選項與限制
options 接受 granularity(word 或 sentence)、ignoreCase、ignoreRepeatedHeadersFooters、normalizeMarginDigits、joinPageContinuations、headerMarginPoints、footerMarginPoints、paragraphGapFactor、minimumParagraphSimilarity、minimumRepeatedPages 與 excludedLineTexts
明確的正整數限制包括 maxPages、maxParagraphs、maxSemanticLines、maxCharacters、maxTokens、maxDifferences、maxAlignmentCells 與 maxWorkUnits;操作記憶體與結果預算會在執行前對這些限制封頂
compare 接受頁數、頁面文字、物件數、render 影像、結構與完整模式,輸出 JSON;可用模式透過 comparisonModes 探索,合約格式透過 contractFormats 探索
format:json 會把結果 JSON 同時寫到選填的 binary callback 與必填的 result callback;format:html 需要 binary callback,並輸出一份獨立的 UTF-8 審閱文件,標題與合約措辭均已跳脫
format:pdf 需要 binary 輸出 callback,並建立 side:before 或 side:after(預設 after)的真實標註審閱副本;options.maxHighlights 限制突顯的語意行數
生命週期與發布
呼叫期間請保持兩個 handle 存活;支援同 handle 比對,反向順序的並行比對會以穩定順序取得鎖
所有 callback 在呼叫端執行緒上同步執行;資源限制會暫時套用到每份已載入文件並在之後還原,失敗與取消路徑也包括在內
這個呼叫不接受輸入 callback 或檔案路徑成員,並保留兩份來源文件與其修訂;binary 與 JSON 輸出會在發布開始前備妥並設限
Pascal 介面
HPDFCompareHeadlessContracts 接受兩個 THPDFHeadlessDocument 物件與既有的 THPDFContractCompareOptions,回傳 THPDFContractCompareReport
HPDFHeadlessContractSource 公開原生 adapter;HPDFContractCompareCore 中的 HPDFCompareContractSources 為可攜式核心接受自訂的有界頁數、語意頁與可見框 callback
HPDFContractCompareCore 擁有共用演算法、報告型別與 HTML renderer,不依賴 VCL 或 LCL;既有的 HPDFContractCompare Windows 介面透過別名與 adapter 保留其型別、常數與已載入文件進入點
THPDFHeadlessDocument.ExtractPageGlyphs 與 AnalyzePageSemanticText 透過 ExtractPageText 使用的同一個巢狀內容走訪器,公開定位 glyph 與語意版面
原生 ABI 驗收會驗證實際的純文字、AES R5/R6 與巢狀 Form 比對、回復、預算與鎖順序;獨立的 pypdf 與 MuPDF reader 驗證完整差異、精確 context、位移與來源 glyph 幾何
原生 Linux C ABI · 合約比對 · 後續交付計畫