ドキュメント比較

THPDFDocComparison は 2 つのロード済み THotPDF ドキュメントを比較し、決定的な JSON レポートを返します

構造比較

cmStructural は各ドキュメントカタログから開始し、間接参照に従い、$Catalog/Pages/Kids[0]/Contents のようなソート済み辞書キーと配列インデックスからパスを割り当てます

スカラー値とデコード済みストリームバイトは SHA-256 でハッシュ化されるため、大きなストリームは完全な別のコピーを実体化せずに増分比較されます

同じパスで異なるシグネチャを持つオブジェクトは objectChanged として報告され、異なるパスでの等しいシグネチャは objectMoved、残りの一致しないオブジェクトは objectInserted または objectDeleted として報告されます

ページ整列

抽出可能なテキストを持つページは、整列にセマンティックテキストシグネチャを使用し、テキストが空または利用できない場合は構造シグネチャにフォールバックします

最長増加部分列パスは、挿入と削除にわたってページ順序を保持し、真の並べ替えを pageMoved として報告します

一致しない整列ページは pageChanged、pageInserted、または pageDeleted になります。ページメタデータは、フォントサブセットエンコーディングノイズを避けるため、/Parent、/Contents、/Resources とは独立して署名されます

レンダリング比較

cmRenderedImage と cmFull は、共通ページを設定された DPI でレンダリングし、各ビットマップを 1 回スキャンして、変更ピクセル、変更ピクセル比率、平均絶対色誤差、最大色デルタ、グローバルな SSIM 風輝度スコアを計算します

THPDFRenderedCompareOptions は、RGB または輝度差分、ピクセルごとの色許容差、最小類似度、最大変更ピクセル比率、タイルサイズ、変更領域の保持、ピクセル予算、任意の PNG オーバーレイを選択します

ページは、変更ピクセル比率と類似度の両方のゲートが通過した場合のみ類似します。メトリクスは完全な精度で評価され、決定的な JSON 報告のためだけに小数点以下 6 桁に丸められます

変更タイルは決定的な 4 連結領域に結合され、ピクセル空間境界、変更ピクセル数、最大色デルタとともに報告されます

ヒートマップが有効な場合、ドキュメント 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