콘텐츠 스트림 의미 비교
HPDFContentStream은 디코딩된 PDF 콘텐츠를 제한된 정규 이벤트로 정규화하고 무해한 직렬화 선택을 변경으로 취급하지 않고 해당 이벤트를 비교할 수 있습니다
선언
function HPDFNormalizeContentStreamGraphicsState(
const Bytes: TBytes; out Canonical: TBytes;
out Statistics: THPDFContentSemanticStatistics;
NumberTolerance: Double = 1E-9;
MaxOperations: Integer = 1000000;
MaxCanonicalBytes: Int64 = 67108864
): boolean;
function HPDFCompareContentStreamsSemantic(
const Left, Right: TBytes;
out Info: THPDFContentSemanticCompareInfo;
NumberTolerance: Double = 1E-9;
MaxOperations: Integer = 1000000;
MaxCanonicalBytes: Int64 = 67108864
): boolean;
정규화
- 숫자는 호출자 허용 오차로 양자화되고 로케일 독립 맞춤법으로 방출됩니다
- 리터럴 및 16진수 문자열은 디코딩된 바이트 값으로 비교하고, 배열은 항목 유형과 순서를 유지합니다
- 그래픽 및 텍스트 상태 설정자는 유효 스냅샷을 갱신하며 중복 설정자는 이벤트를 만들지 않습니다
q와Q는 전체 상태 스택을 유지하지만 그 자체로 이벤트가 되지는 않습니다- 연속
cm연산자는 PDF 순서대로 곱해지므로 동등한 행렬 분해는 동등하게 비교됩니다 - 유지되는 각 연산자는 해당 지점에 적용되는 유효 행렬, 선, 색상, 외부 그래픽, 텍스트 상태를 담습니다
- 인라인 이미지 키는 토크나이저에 의해 정규화되고 페이로드는 정규 스트림 확장을 피하기 위해 SHA-256 항등을 사용합니다
진단 및 경계
THPDFContentSemanticStatistics는 토큰, 연산, 상태 연산, 중복 상태, 정규 이벤트, 최대 스택 깊이, 정규 바이트, 오류 오프셋, 유효성, 한계 정보를 보고합니다. 비교는 첫 번째 다른 정규 이벤트도 보고합니다
잘못된 중첩 사전 피연산자, 유효하지 않은 상태 연산자 arity, 짝이 맞지 않거나 닫히지 않은 그래픽 상태 범위, 후행 피연산자, 연산 오버플로, 정규 바이트 오버플로는 fail-closed 처리되며 절대 동등성을 보고하지 않습니다
디코딩된 콘텐츠 바이트를 전달하십시오. 스트림 필터 디코딩과 서로 다른 리소스 사전에 걸친 리소스 이름 조정은 호출자의 책임으로 남습니다