오브젝트 스트림이란?
하나의 오브젝트 스트림 은(는) PDF 1.5에서 도입된 기능으로, 여러 개의 간접 오브젝트를 하나의 PDF 스트림 오브젝트에 저장하는 압축 방식입니다(ISO 32000-2).
일반 오브젝트와 달리 obj, endobj 키워드를 사용하지 않습니다. 보통 교차 참조 스트림과 함께 사용되며, PDF 문서의 파일 크기를 줄이고 효율성을 높여 논리 구조나 메타데이터 메타데이터 저장과 같은 기능을 지원합니다.
오브젝트 스트림이 절약하는 것
PDF의 대부분 객체는 작습니다. 페이지를 설명하는 딕셔너리, 폰트 참조, 주석 등이 그 예입니다. 이들을 각각 따로 기록하면 객체마다 오버헤드가 생기고, 묶어서 압축할 수도 없습니다. 오브젝트 스트림은 이러한 작은 COS 객체들을 하나의 스트림으로 모아 함께 압축합니다. 비슷한 구조는 서로 인접해 있을 때 더 잘 압축되기 때문에, 페이지나 주석이 많은 문서에서는 상당한 용량 절감 효과가 있습니다.
함께 사용되는 크로스 레퍼런스 스트림
이 방식으로 저장된 객체는 파일 내 바이트 오프셋을 기록하는 고전적인 크로스 레퍼런스 테이블로는 찾을 수 없습니다. 따라서 오브젝트 스트림을 사용하는 파일은 크로스 레퍼런스 스트림도 함께 사용하며, 이 스트림 역시 압축되고 각 객체가 어디에 저장되어 있는지, 어떤 오브젝트 스트림에 포함되는지까지 기록합니다.
두 기능은 PDF 1.5에서 함께 도입되었습니다. 실제로는 이런 파일은 더 이상 일반 텍스트 에디터로 읽을 수 없고, PDF 1.4용으로 작성된 오래된 뷰어에서는 전혀 열 수 없습니다.