선택 콘텐츠 뷰어 상태

네이티브 래스터화는 ISO 32000-1:2008 8.11.4.4절과 8.11.4.5절의 뷰어 스타일 선택 콘텐츠 권고를 명시적으로 적용할 수 있습니다

기본 옵션은 ViewerState=nil을 두고 두 annotation 용법 모두에서 스탠드얼론 final-form D 동작을 유지하며, AS를 자동으로 적용하지 않습니다

Access := Document.GetRenderAccess(0);
Context := THPDFOptionalContentContext.Default;
Context.Zoom := 2;
Context.Language := 'en-US';
Viewer := THPDFHeadlessOptionalContentState.Create(Access, Context);
try
  Viewer.SetGroupState(10, 0, True);
  Options := THPDFHeadlessRenderOptions.Default;
  Options.ViewerState := Viewer;
  Viewer.Event := hocePrint;
  Options.Usage := hruPrint;
  HPDFRenderHeadlessPagePNGFile(Access, OutputFile, Options);
finally
  Viewer.Free;
end;

View는 D를 초기화하고 매칭되는 View 애플리케이션을 적용한 뒤 수동 오버라이드를 적용합니다. Print나 Export 애플리케이션은 해당 연산 동안 현재 권고를 일시적으로 대체하며 상태 객체나 PDF 사전은 수정하지 않습니다

그룹이 ON을 받으려면 매칭되는 애플리케이션과 카테고리 전체에서 활성 권고가 전부 ON이어야 합니다. 사용 정보가 없으면 권고를 제공하지 않고 해당 그룹의 현재 상태를 유지합니다

지원 카테고리는 View, Print, Export, Zoom, Language, User입니다. CreatorInfo와 PageElement는 정보성으로 남습니다

Zoom은 닫힌 min과 열린 max를 쓰며 최소한 한쪽 경계가 필요하고 기본값은 0과 무한대입니다. Language는 애플리케이션의 OCG 안에서 대소문자 무시 정확 매칭 태그를 우선하고, 없으면 Preferred ON으로 표시된 주 언어 그룹을 매칭합니다

User는 명시적으로 공급된 Individual, Title, Organization을 정확한 Unicode 텍스트로 문자열이나 이름 배열과 비교합니다. PDFDocEncoding, UTF-16, PDF 2.0 UTF-8 텍스트 문자열은 디코딩된 의미를 유지합니다

OCG를 생략한 애플리케이션은 빈 그룹 집합이 기본입니다. 기존 Print 사용 사전에서 PrintState가 생략되면 권고를 제공하지 않습니다

AS는 카테고리를 같은 이름의 이벤트로 한정하지 않으므로, Print 애플리케이션이 같은 명시적 컨텍스트로 Zoom이나 Language 권고를 적용할 수 있습니다

OCMD 정책, 재귀 VE 표현식, 중첩 마크 콘텐츠, Form XObject, 이미지, annotation appearance는 기존의 제한된 가시성 경로를 통해 결과 그룹 상태를 소비합니다

수동 변경은 해제하거나 되돌리기 전까지 컨텍스트 변경에도 유지됩니다. 문서를 다시 로드하거나 변경·닫기·파괴하면 상태가 영구적으로 만료되며, 새 액세스와 새 객체가 필요합니다

각 렌더 동안 빌린 상태를 살아있고 변경 없이 유지하세요. 기반 어댑터의 콜백 동시성 계약이 유효한 동안 읽기 전용 재사용은 허용됩니다

렌더 작업, 그룹 조회, 언어 후보 스캔, 수동 선택 조회, 제한된 16진수와 UTF-8 텍스트 디코딩, 임시 상태 저장은 연산·토큰·디코딩 바이트·워킹 바이트·취소 한도에 참여합니다

SetGroupState는 호출자 주도 상태 컨테이너 연산이며 100000개 선택 용량을 가집니다. 렌더 한도는 소비를 독립적으로 제한하므로, 애플리케이션은 외부 선택 요청에 적절한 한도를 두어야 합니다

뷰어 이벤트는 annotation Usage와 독립적입니다. 어느 쪽 옵션도 인쇄 권한을 부여하지 않고, SetOCGState 액션을 실행하지 않고, 리치 미디어를 활성화하지 않으며, 사용자 인터페이스를 만들지 않습니다

인수 검증은 독립적인 선언 상태와 정확한 RGB 사각형 마스크, 라이프타임·변경 테스트, 재진입과 직렬화 콜백 동시 렌더링, MuPDF와 Poppler 관찰을 분리해서 수행합니다

Reader 기본 컨텍스트 관찰은 명시적 네이티브 Zoom, Language, User, 수동 상태 방정식을 대신하지 않습니다. 순수 기하 동반 검사는 래스터 좌표를 독립적으로 검증합니다

Linux 버전 지정 JSON 연산

{
  "schemaVersion": 1,
  "type": "render",
  "dpi": 72,
  "usage": "view",
  "optionalContent": {
    "event": "print",
    "zoom": 2,
    "language": "en-US",
    "individual": "Alice",
    "title": "Engineer",
    "organization": "Example",
    "selections": [
      {"objectNumber": 10, "generationNumber": 0, "enabled": true}
    ]
  }
}

optionalContent를 생략하면 정적 D 동작을 유지합니다. 객체에 넣으면 기본 View 이벤트, zoom 1, 빈 언어와 사용자 컨텍스트 문자열로 자동 상태를 활성화합니다

이벤트는 view, print, export를 받으며 annotation usage와 독립적입니다. 운영 체제 언어, 사용자 신원, 디스플레이 줌을 추론하지 않습니다

컨텍스트 문자열은 각각 최대 4096 UTF-16 코드 유닛을 허용합니다. zoom은 유한하고 양수이며 최대 1000000000이어야 합니다

선택에는 양수 객체 번호, 0부터 65535까지의 세대 번호, 명시적 Boolean enabled 값이 필요합니다. 연산은 워킹 메모리 한도 안에서 최대 1024개 선택을 받으며, 반복 참조는 마지막으로 공급된 상태를 씁니다

각 연산은 자기 소유의 빌린 네이티브 상태를 만들고 해제하므로, 원하는 수동 선택은 이후 요청마다 다시 보내야 합니다. PDF 사전과 이 객체 없는 후속 렌더는 이전 구성을 유지합니다

잘못된 JSON 옵션은 invalid-argument 상태를 반환하고, 승인 예산 실패는 budget-exceeded 상태를 반환하며, 잘못된 문서 메타데이터나 오래된 그룹 참조는 PNG 발행 전에 기존 렌더 parse-error 상태를 유지합니다

Capabilities는 optionalContent.automaticState, 세 이벤트, 명시적 컨텍스트 멤버, 수동 선택 지원, 연산 범위 라이프타임을 보고합니다

Tests/Linux/Build-LinuxABIOptionalAutomaticFixtures.py OUTPUT으로 실제 평문과 AES R5/R6 Language/User 소스를 생성한 뒤, 네이티브 ABI 빌드마다 Tests/Linux/Run-LinuxABIOptionalAutomaticAcceptance.sh LIBRARY FIXTURES NEW_OUTPUT을 실행하세요

콜백 인수 검증은 독립적인 픽셀 공식, 엄격한 JSON 타입, 암호화, 예산, 취소, 스티키 출력/결과 실패, same-handle 복구, 유지된 뷰어 상태 부재를 검사합니다. pypdf, cryptography, NumPy, Pillow가 필요하며 데스크톱 뷰어 실행을 억제합니다

THPDFHeadlessOptionalContentState, THPDFOptionalContentContext, IHPDFHeadlessRenderLifetime를 참고하세요