ISO 32000으로 표준화된 PDF(Portable Document Format)는 응용 소프트웨어, 하드웨어 및 운영 체제와 독립적인 방식으로 텍스트 서식과 이미지를 포함한 문서를 표시하기 위해 1992년 Adobe에서 개발한 파일 형식입니다.
PostScript 언어를 기반으로 하는 각 PDF 파일은 텍스트, 글꼴, 벡터 그래픽, 래스터 이미지 및 기타 정보를 포함하여 고정 레이아웃 평면 문서의 전체 설명을 캡슐화하여 표시하는 데 필요한 모든 정보를 포함합니다. PDF는 1991년 Adobe의 공동 창립자 John Warnock이 시작한 '카멜롯 프로젝트'에 뿌리를 두고 있습니다.
PDF 파일에는 평면 텍스트와 그래픽 외에도 논리적 구조화 요소, 주석 및 양식 필드와 같은 대화형 요소, 레이어, 리치 미디어(동영상 콘텐츠 포함), U3D 또는 PRC를 사용한 3차원 개체, 기타 다양한 데이터 형식 등 다양한 콘텐츠가 포함될 수 있습니다. 또한 PDF 사양은 암호화 및 디지털 서명, 파일 첨부, 메타데이터를 제공하여 이러한 기능을 필요로 하는 워크플로우를 지원합니다.
역사
Adobe Systems는 1993년 PDF 사양을 무료로 제공했습니다. 초기에 PDF는 주로 데스크탑 퍼블리싱 워크플로우에서 인기를 끌었으며 DjVu, Envoy, Common Ground Digital Paper, Farallon Replica, 심지어 Adobe의 자체 PostScript 포맷 등 여러 다른 포맷과 경쟁했습니다.
PDF는 2008년 7월 1일 공개 표준으로 발표되고 국제 표준화 기구에서 ISO 32000-1:2008로 발표되기 전까지 Adobe가 독점적으로 관리하던 형식이었으며 당시 사양에 대한 통제권은 업계 전문가로 구성된 ISO 위원회로 넘어갔습니다. 2008년에 Adobe는 PDF 호환 구현을 제작, 사용, 판매 및 배포하는 데 필요한 Adobe 소유의 모든 특허에 대해 로열티 없는 권리를 부여하는 ISO 32000-1에 대한 공개 특허 라이선스를 발표했습니다.
ISO 32000-1이 된 PDF 사양의 6번째 버전인 PDF 1.7에는 ISO 32000-1에서 규범적으로 참조하고 ISO 32000-1 사양의 완전한 구현에 필수적인 Adobe XML Forms Architecture(XFA) 및 Acrobat용 JavaScript 확장 등 Adobe에서만 정의한 일부 독점 기술이 포함되어 있습니다. 이러한 독점 기술은 표준화되어 있지 않으며 사양은 Adobe 웹사이트에만 게시됩니다. 이러한 독점 기술 대부분은 널리 사용되는 타사의 PDF 구현에서 지원되지 않습니다.
ISO는 2017년에 Adobe에서 제공하는 무료 사양을 대체하여 구매 가능한 ISO 32000-2를 발표했습니다. 2020년 12월에는 규범 참조에 대한 설명, 수정 및 중요 업데이트가 포함된 PDF 2.0의 두 번째 버전인 ISO 32000-2:2020이 발표되었습니다(ISO 32000-2에는 독점 기술이 규범 참조로 포함되어 있지 않습니다). 2023년 4월 PDF협회는 ISO 32000-2를 무료로 다운로드할 수 있도록 했습니다.
기술적인 디테일
PDF 파일은 벡터 그래픽, 텍스트, 비트맵 그래픽의 조합인 경우가 많습니다. PDF의 기본 콘텐츠 유형은 다음과 같습니다:
- 콘텐츠 스트림으로 저장된 조판된 텍스트(즉, 일반 텍스트로 인코딩되지 않음);
- 도형과 선으로 구성된 일러스트레이션 및 디자인용 벡터 그래픽;
- 사진 및 기타 유형의 이미지를 위한 래스터 그래픽
- 문서의 멀티미디어 개체.
이후 PDF 개정판에서는 링크(문서 또는 웹 페이지 내부), 양식, JavaScript(처음에는 Acrobat 3.0용 플러그인으로 제공) 또는 플러그인을 사용하여 처리할 수 있는 기타 모든 유형의 임베디드 콘텐츠도 지원할 수 있습니다.
PDF는 세 가지 기술을 결합합니다:
- 레이아웃과 그래픽을 생성하기 위한 선언적 형식의 PostScript 페이지 설명 프로그래밍 언어와 동등한 하위 집합.
- 글꼴을 문서와 함께 이동시킬 수 있는 글꼴 임베딩/교체 시스템.
- 이러한 요소와 관련 콘텐츠를 단일 파일로 묶고 적절한 경우 데이터를 압축하는 구조화된 저장 시스템.
포스트스크립트 언어
포스트스크립트는 인터프리터에서 실행되어 이미지를 생성하는 페이지 설명 언어입니다. 그래픽을 처리할 수 있으며 분기 및 루핑과 같은 프로그래밍 언어의 표준 기능을 갖추고 있습니다. PDF는 이러한 흐름 제어 기능을 제거하기 위해 단순화된 PostScript의 하위 집합이지만 그래픽 명령은 남아 있습니다.
역사적으로 PostScript와 유사한 PDF 코드는 소스 PostScript 파일(즉, 실행 프로그램)에서 루프 언롤링, 인라이닝 및 사용하지 않는 분기 제거와 같은 표준 컴파일러 기술을 사용하여 생성되어 순전히 선언적이고 정적인 코드가 생성됩니다. 그런 다음 올바른 렌더링을 위해 필요한 모든 종속성(문서가 참조하는 외부 파일, 그래픽 또는 글꼴)과 함께 컨테이너 형식으로 패키징하고 압축합니다.
문서 포맷으로서 PDF는 PostScript에 비해 몇 가지 장점이 있습니다:
- PDF는 데이터로 처리할 수 있는 정적 선언적 PostScript 코드만 포함하며, 전체 프로그램 인터프리터나 컴파일러가 필요하지 않습니다. 따라서 복잡도가 높은 엔진의 복잡성과 보안 위험을 피할 수 있습니다.
- 디스플레이 포스트스크립트와 마찬가지로, 버전 1.4부터 PDF는 투명 그래픽을 지원하지만 표준 포스트스크립트는 지원하지 않습니다.
- PDF는 한 페이지의 코드가 다른 페이지에 영향을 줄 수 없다는 규칙을 적용합니다. 이 규칙은 PostScript 코드에도 강력히 권장되지만, PostScript는 페이지와 문서의 개념에 국한되지 않고 더 큰 유연성을 허용하는 완전한 프로그래밍 언어이므로 명시적으로 구현해야 합니다.
- 렌더링에 필요한 모든 데이터가 파일 자체에 포함되어 있어 이식성이 향상됩니다.
단점은 다음과 같습니다: - 유연성 손실 및 단일 사용 사례로의 제한
- (때로는 훨씬) 큰 크기. 사소하게 반복되는 콘텐츠의 경우 압축을 통해 이 문제를 완화할 수 있습니다. (예를 들어 비트맵 이미지와 비교하면 전체적으로 여전히 훨씬 작습니다.)
PDF v1.6부터 인터랙티브 3D 문서 임베딩을 지원합니다: 3D 도면은 U3D 또는 PRC 및 기타 다양한 데이터 형식을 사용하여 임베드할 수 있습니다.
파일 포맷
PDF 파일은 이진 콘텐츠가 있을 수 있는 특정 요소를 제외하고는 ASCII 문자를 사용하여 구성됩니다. 파일은 매직넘버(읽을 수 있는 문자열)와 형식 버전(예: %PDF-1.7)이 포함된 헤더로 시작됩니다. 이 형식은 COS("캐러셀" 객체 구조) 형식의 하위 집합입니다. COS 트리 파일은 주로 객체로 구성되며, 이 중 9가지 유형이 있습니다.
- 참 또는 거짓을 나타내는 부울 값
- 실수
- 정수
- 괄호((...))로 묶거나 단일 꺾쇠 괄호(<...>) 안에 16진수로 표시되는 문자열입니다. 문자열에는 8비트 문자가 포함될 수 있습니다.
- 이름, 슬래시(/)로 시작하는 이름
- 배열, 대괄호([...])로 묶인 객체의 정렬된 컬렉션
- 사전, 이중 대괄호(<<...>>)로 묶인 이름으로 인덱싱된 객체 모음
- 일반적으로 선택적으로 압축된 대량의 바이너리 데이터를 포함하는 스트림으로, 앞에 사전이 있고 스트림 키워드와 엔드스트림 키워드 사이에 묶여 있습니다.
- 널 객체
퍼센트 기호(%)가 앞에 붙은 8비트 문자를 사용하는 주석이 삽입될 수 있습니다.