PDF 버전별 저장 호환성
버전 3.23.0은 선택한 PDF 저장 버전을 전체 저장의 엄격한 출력 계약으로 처리합니다. 애플리케이션이 SetInformation(0, "1.2"), "1.3", "1.4", "1.5", "1.6" 또는 "1.7"을 호출하면 SaveToFile, SaveToString, SaveToStream은 선택한 대상에 맞는 출력을 쓰거나 출력을 쓰기 전에 실패합니다
전체 저장은 Catalog /Version 재정의를 제거하므로 로드된 문서가 선택한 헤더보다 높은 유효 버전으로 조용히 올라갈 수 없습니다. 더 낮은 버전 대상은 지원되지 않는 Catalog /Extensions 항목도 제거하며, PDF 1.3 대상은 문서 정보 사전은 보존하면서 Catalog /Metadata 및 XMP Metadata 스트림을 생략합니다
저장 preflight는 혼합 버전 파일을 만들지 않고 알려진 이후 버전 기능을 거부합니다. 검사 경계에는 PDF 1.3 페이지 박스, 임베디드 파일 스트림, JavaScript 동작, ICCBased 및 DeviceN 색 공간, ToUnicode CMaps, PDF 1.4 투명도, Tagged PDF 구조, output intents 및 주석 키, PDF 1.5 object streams, 선택 콘텐츠, XFA, page tabs, 서명 필드 append-only 플래그 및 고급 양식 필드 플래그, PDF 1.6 UserUnit, OpenType 글꼴 프로그램, 3D 사전, NChannel 색 공간 및 viewport 데이터, PDF 1.7 RichMedia, Projection, Redaction, 고급 주석 및 ETSI 서명 하위 필터가 포함됩니다; 동일한 규칙 집합은 annotation /CA 불투명도, JBIG2Decode, Metadata 스트림, 문서 수준 EmbeddedFiles name tree, JPXDecode, xref streams, Crypt filters, AESV2 crypt filters 및 PDF 1.7 Requirements도 다룹니다
PDF 1.7 Adobe extension-level 요구 사항은 PDF 1.7 헤더와 별도로 검사됩니다. AESV3, AES-256, RichMedia, Projection, 지리공간 사전 및 ETSI 서명 하위 필터는 선택한 저장 대상이 허용되기 전에 충분한 Catalog /Extensions /ADBE /ExtensionLevel 선언을 가져야 합니다. 이러한 extension-level 기능을 내보내는 writer 진입점은 선택한 저장 대상을 PDF 1.7로 올릴 수 있을 때 일치하는 확장 선언을 자동으로 추가합니다
v3.67.0부터 로더 측 콘텐츠 기능 감지는 지연 실행됩니다. 로드된 문서는 즉시 스캔되지 않으며, 유효 버전이나 로드 시점 기능 진단이 GetInformation(0/101/103), GetPDFUADiagnostics, SaveToFile, SaveToString, SaveToStream 또는 관련 append-save 경로에서 처음 사용될 때 감지가 실행됩니다. 이러한 진단을 조회하지 않고 저장도 하지 않는 읽기 전용 워크플로는 스캔을 완전히 건너뛸 수 있습니다
v3.67.1부터 감지 스캔은 stream 객체를 얕게 파싱합니다. 큰 stream 본문을 건너뛰면서 객체 사전과 stream 분류를 검사하므로 필터, 하위 형식, 색 공간, 버전 제한 키의 감지는 동일하게 유지되고 큰 이미지 스트림이 더 이상 스캔을 지배하지 않습니다. 일반 객체 읽기와 모든 저장 경로는 출력에 필요할 때 여전히 전체 stream 본문을 읽습니다
v3.67.2부터 명시적 저장 버전 선택은 지연 감지보다 우선합니다. 로드된 문서에서 SetInformation(0, ...)과 LockSaveVersion은 요청한 버전을 적용하기 전에 보류 중인 감지 스냅샷을 실행하므로 이후 저장이나 진단 조회가 호출자 뒤에서 선택된 대상을 올릴 수 없습니다. 새로 만든 문서는 로더 측 감지 대상으로 armed 되지 않으며, 이전의 writer-only 버전 제어 동작과 일치합니다
선택한 대상 버전이 문서에 아직 남아 있는 기능보다 낮으면 TPDFlib 호출자는 LastErrorCode 602를 받습니다. 저장하기 전에 더 최신 대상 버전을 선택하거나 호환되지 않는 기능을 제거하십시오