헤드리스 교차 참조
HPDFHeadlessXRef는 THPDFHeadlessDocument가 쓰는 검증된 xref 스트림·객체 스트림 인덱싱을 공급합니다. 사전과 객체 스트림 헤더는 공유 객체 파서를 쓰고, 빅엔디안 필드는 공유 Direct File 바이트 리더를 씁니다
HPDFHeadlessDecodeXRefRows(Dictionary, DecodedBytes, MaxObjects, CancellationToken)는 호출자가 필터와 프레딕터를 디코딩한 뒤 직접 Type, Size, W, 선택적 Index 항목을 읽습니다
THPDFHeadlessXRefRows는 ObjectNumber와 공유 THPDFDirectXrefEntry를 Entry로 담은 THPDFHeadlessXRefRow 레코드 배열입니다. entry 종류 0, 1, 2는 각각 free, 직접, 압축 객체를 식별합니다
폭은 0~8바이트이고 생략된 필드는 PDF 기본값을 쓰며 오프셋은 Int64 정밀도를 유지합니다. 서브섹션 겹침, 페이로드 길이 불일치, 범위 밖 세대, 부호 없는 오버플로는 객체 인덱싱 전에 거절됩니다
HPDFHeadlessReadObjectStreamIndex(Dictionary, DecodedBytes, MaxObjects, MaxDecodedBytes, CancellationToken)는 직접 Type=ObjStm, N, First를 검증한 뒤 공유 파서로 수치 헤더를 파싱합니다
THPDFHeadlessObjectStreamMembers는 ObjectNumber, 0부터 시작하는 디코딩 페이로드 Offset, 양의 Length를 담은 THPDFHeadlessObjectStreamMember 레코드 배열입니다. 중복 객체 번호, 비정수 쌍, 잘못된 오프셋, 구성된 예산은 거절됩니다
HPDFHeadlessObjectStreamBody(Members, DecodedBytes, MemberIndex, ExpectedObjectNumber)는 컨테이너 헤더와 권위 있는 xref 멤버 번호를 대조한 뒤 정확한 멤버 슬라이스를 반환합니다. 문서 호출자는 그 슬라이스를 공유 파서로 파싱합니다
EHPDFHeadlessXRefError는 메시지와 읽기 전용 LimitExceeded 플래그를 보고하고, 취소는 EHPDFOperationCancelled를 발생시킵니다. 사전과 디코딩 버퍼는 호출자 소유이고 반환 배열은 값 레코드를 담습니다
프로바이더는 바이트 인덱싱과 검증을 맡습니다. 리비전 우선순위, 하이브리드 사이드 섹션 병합, 필터 디코딩, 복호화, 객체 캐싱, 문서 소유는 문서 로더에 남습니다
정확한 수치 값
공유 파서는 Single 변환이 값을 반올림하거나 크기가 16777216을 넘을 때 원본 소스 토큰을 유지합니다. 교차 참조·객체 스트림 정수 리더는 정확한 Int64 오프셋·인덱스에 그 토큰을 우선 쓰고, 작은 정확 정수는 할당 효율 경로를 유지합니다
테스트는 공유 라이터와 독립 압축 객체 PDF를 쓰고 40비트 오프셋, 폭·기본값, 프레딕터, 성긴 범위, 하이브리드 우선순위, 잘못된 멤버 인덱스, 리비전 사이클을 다루며, 원본 파서 할당·처리량 임계값을 유지합니다