문서 비교

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 보고를 위해서만 소수 여섯 자리로 반올림됩니다

변경 타일은 결정적 4방향 연결 영역으로 결합되어 픽셀 공간 경계, 변경 픽셀 수, 최대 색 델타와 함께 보고됩니다

히트맵이 활성화되면 변경 픽셀이 문서 A 위에 노란색에서 빨간색으로 블렌드되고 호출자 선택 디렉토리에 page-000001-diff.png 스타일 파일로 저장됩니다

경계 및 완전성

THPDFStructuralCompareLimits는 객체, 엣지, 페이지, 깊이, 차이, 스트림 바이트, 값 바이트, 경로 바이트 한계를 제어합니다

순회가 한계에 도달하면 보고서는 comparisonBudget을 포함하고 comparisonComplete을 false로 설정하며 문서가 동일하다고 보고할 수 없습니다

렌더 작업은 할당 전에 추정되고 페이지별 및 비교별로 제한됩니다. 렌더링, 할당 또는 오버레이 실패는 renderBudget 또는 renderError를 추가하고 renderComparisonComplete과 comparisonComplete을 false로 설정하며 fail-closed 처리합니다

비교 모드

결과 형식

보고서에는 소스 수, 순회 텔레메트리, 정규화된 구조 및 렌더링 한계, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical, differences 배열이 포함됩니다

렌더 모드는 또한 페이지 상태, 치수, 메트릭, 변경 영역, 선택적 오버레이 경로와 집계 렌더 페이지 및 픽셀 수가 있는 renderedPages 배열을 반환합니다

각 차이는 안정적인 pathA 및 pathB 값, 페이지 인덱스, 객체 번호, 유형, 상세 문자열을 포함할 수 있습니다

관련 API

THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments