콘텐츠로 이동
getnextpdf.com

PDF의 짧은 역사

Spec: ISO 32000-1

PDF는 어떤 불만에 관한 메모로 시작되었습니다. 문서를 어디에서나 인쇄할 수는 있지만, 안정적으로 보낼 수는 없다는 것이었습니다. 이 페이지는 그 문제가 어떻게 세계에서 가장 널리 쓰이는 문서 포맷 중 하나로 바뀌었는지에 대한 짧은 이야기입니다 — 1993년 PostScript에서 파생된 것에서, 최신 판본에 더 이상 Adobe의 이름이 붙지 않는 ISO 표준에 이르기까지.

여기서 역사는 향수가 아닙니다. 여러분이 오늘 만드는 PDF는 수십 년 전에 내려진 결정들로 가득 차 있으며, 그 대부분은 여전히 하중을 지탱하고 있습니다. 객체 번호 0은 1993년 설계가 그렇게 정했기 때문에 생성 번호 65535를 갖는 프리 리스트 헤드입니다. 페이지는 이 포맷이 인쇄 언어에서 자라났기 때문에 PostScript에서 유래한 그리기 연산자로 자기 자신을 기술합니다. 어떤 규칙이 어디서 왔는지 아는 것은 그것을 왜 그냥 무시할 수 없는지 이해하는 가장 빠른 길인 경우가 많습니다.

또 다른 이유는 관점입니다. “PDF 2.0”은 말끔한 재발명처럼 들립니다. 그렇지 않습니다. 그것은 30년 묵은 퇴적층 위의 가장 최신 층이며, 그것을 리부트가 아닌 연속으로 읽는 것이 그것이 어떻게 동작할지 예측하게 해 줍니다.

  • PDF는 Adobe의 페이지 기술 언어인 PostScript에서 유래합니다. 그리기 모델은 유지하고 완전한 프로그래밍 언어는 버렸습니다.
  • John Warnock의 1991년 사내 “Camelot” 메모는 그 목표를 정의했습니다. 누구나 열 수 있고 어디서나 똑같이 보이는 파일이었습니다.
  • PDF 1.0은 1993년 Acrobat과 함께 출시되었습니다. 그것은 기본 형식이 되기 전에는 유료의 틈새 제품이었습니다.
  • 1.1부터 1.7까지의 버전은 그것을 필수 불가결하게 만든 것들을 하나의 사양씩 더했습니다 — 링크, 암호화, 압축, 양식, 투명도, 태깅, 디지털 서명.
  • 2008년에 PDF 1.7은 ISO 32000-1이 되었습니다. 이 포맷은 Adobe의 것이기를 멈추고 개방된 국제 표준이 되었습니다.
  • PDF 2.0ISO 32000-2로, ISO 안에서 전적으로 작성되고 소유된 첫 판본입니다. 그것은 재발명하기보다 통합하고, 조이고, 더 많이 제거합니다.

NextPDF는 이 계보를 배경 이야기가 아니라 실제 제약으로 취급합니다. 그것은 기본적으로 PDF 2.0 엔진이지만, PDF 위에 빌드된 표준들이 여전히 그것들을 요구하기 때문에, 이 포맷의 더 오래된 형태들에 의도적으로 도달할 수 있습니다.

타임라인에서 결정적인 단절은 2008년입니다. 그 이전에 “PDF”는 “Adobe의 최신 사양이 말하는 무엇이든”을 의미했습니다. 그 이후에 PDF는 ISO 표준(Spec: ISO 32000-1)이며, 이것이 바로 이와 같은 독립 엔진이 존재하고 벤더의 제품이 아니라 공개 문서에 비추어 적합성을 주장할 수 있는 이유입니다. 현재의 기준선은 PDF 2.0(Spec: ISO 32000-2, Introduction), 즉 ISO 안에서 전적으로 작성된 첫 판본입니다.

그 역사는 엔진의 조용하지만 중요한 설계 선택 하나를 설명합니다. PDF 버전은 결코 우연이 아니라 의도적인 결정입니다. NextPDF는 기본적으로 2.0 구조를 작성하지만, 더 오래된 1.7 및 1.4 파일 형태를 여전히 직렬화할 수 있습니다 — 향수 때문이 아니라, PDF/A 같은 적합성 프로파일이 그 더 이른 구조들에 비추어 정의되었고 계속 그것들을 요구하기 때문입니다. 과거는 폐기되지 않았습니다. 그것은 지원되는 출력 대상입니다.

  1. PostScript (1984)Adobe가 레이저 프린터를 위한 페이지 기술 언어를 출시합니다 — PDF가 물려받는 그리기 모델입니다.
  2. Camelot 메모 (1991)John Warnock이 누구나 열 수 있고 어디서나 똑같이 렌더링하는 것을 목표로 하는 휴대 가능한 파일을 제안합니다.
  3. Acrobat과 함께한 PDF 1.0 (1993)이 포맷이 유료 제품으로 출시됩니다. 도입은 더디고, 리더와 도구가 돈이 듭니다.
  4. PDF 1.1부터 1.7까지 (1996부터 2006까지)링크, 암호화, 압축, 양식, 투명도, 태깅, 그리고 서명이 한 버전씩 도착합니다.
  5. ISO 32000-1 (2008)PDF 1.7이 ISO에 채택됩니다. 이 포맷이 더 이상 Adobe 소유가 아닌 개방 표준이 됩니다.
  6. ISO 32000-2 / PDF 2.0 (2017, 2020 개정)첫 ISO 작성 판본: 통합, 조임, 그리고 NextPDF가 기본으로 작성하는 기준선입니다.
PDF의 버전 계보를 타임라인으로: PostScript에서 파생된 것이 유료 제품이 되고, 1.x 계열에 걸쳐 기능을 축적하고, 2008년에 ISO로 넘겨지고, NextPDF가 대상으로 하는 ISO 소유의 2.0 기준선에 도달합니다.

그 타임라인의 몇 가지 세부 사항은 곱씹어 볼 가치가 있습니다. 그것들이 이 포맷의 성격을 설명하기 때문입니다.

그것은 인쇄 언어에서 나왔습니다. PostScript는 프린터가 그릴 수 있는 것은 무엇이든 그릴 수 있었지만, 완전한 프로그래밍 언어였습니다 — PostScript 파일은 영원히 반복할 수 있었습니다. PDF는 PostScript의 좌표계와 그래픽 연산자는 유지하고 프로그래밍 가능성은 버렸습니다. 남은 것은 완성된 페이지의 정적 기술이었습니다. 예측 가능하고, 한계가 정해져 있고, 렌더링하기에 안전한. 그 절충이 PDF 페이지가 모든 리더에서 똑같이 보이는 이유이며, 그것이 PostScript 파일이 사실상 그랬던 것처럼 작은 애플리케이션이 아닌 이유입니다.

무료 전자 채택은 전환점이었습니다. PDF 1.0은 상업 제품이었고, 수년 동안 이 포맷은 유료의 호기심거리였습니다. 돌파구는 작성 도구는 유료로 유지하면서 리더를 무료로 만든 것이었습니다. 한쪽만 받아들이면 되는 포맷은 누구나 받을 수 있는 포맷입니다. 사양이 1.7에 이를 무렵, PDF는 이미 전송 중에 변경되어서는 안 되는 문서를 보내는 기본 방식이었습니다.

2008년은 규칙을 누가 소유하는지를 바꿨습니다. PDF 1.7을 ISO에 넘긴 것은 벤더 사양을 국제 표준으로 바꿨습니다. 그것이 독립적이고 적합한 엔진이 애초에 가능해지는 순간입니다 — 모든 동작에 대한 공개 조항을 갖춘, 그것에 대해 빌드할 공개 문서가 있는 것입니다.

여러분은 파일의 첫 줄에서 그 전체 궤적을 읽을 수 있습니다. 헤더는 버전 표시자이며, 이 포맷에서 가장 오래되고 가장 단순한 계약입니다 — 1993년에 존재했고 오늘날에도 형태가 변하지 않았습니다.

%PDF-1.0 ← 1993, Acrobat 1.0
%PDF-1.4 ← 2001, transparency and the basis for PDF/A-1
%PDF-1.7 ← 2006, the version ISO adopted as 32000-1 in 2008
%PDF-2.0 ← ISO 32000-2, the first ISO-authored edition

한 세대 차이가 나는, 같은 여덟 바이트입니다. 현대의 리더는 이 넷을 모두 열 수 있습니다. 이 포맷이 더 오래된 리더는 이해하지 못하는 것을 무시할 수 있도록, 그리고 더 새로운 리더는 이전 것과 호환을 유지하도록 설계되었기 때문입니다. 실제로 더 오래된 리더는 알 수 없는 기능을 대신 잘못 렌더링할 수도 있으므로, 그 보장은 절대적인 것이 아니라 설계상의 의도입니다. NextPDF는 기본적으로 이 가운데 마지막 것을 작성하며, 적합성 프로파일이 요청할 때 나머지를 작성할 수 있습니다.

함정은 버전 번호를 극적인 재발명의 이야기로 읽는 것입니다 — 마치 PDF 2.0이 PDF 1.7에 대해 영화의 속편과 같은 관계인 것처럼요. 그것은 오래된 참고서의 신중한 새 판본에 더 가깝습니다. 1993년 파일이 사용한 객체 모델, 상호 참조 테이블, 그리고 트레일러는 2.0 파일이 사용하는 것과 알아볼 수 있을 만큼 같은 기계 장치입니다. 30년에 걸쳐 변한 것의 대부분은 원래 설계 옆에 더해진 것이지, 뜯어내고 교체된 것이 아닙니다. 이 포맷은 유난히 보수적이며, 그 보수성이 핵심 전부입니다. 오늘 작성된 파일은 10년 뒤에도 여전히 열려야 하고, 10년 전에 작성된 파일은 오늘도 여전히 열려야 합니다.

두 번째 오해는 “ISO 32000-2는 표지만 새로운 Adobe의 사양”이라는 것입니다. 두 ISO 판본은 저작 측면에서 진정으로 다릅니다. PDF 2.0은 Adobe가 발행하고 나중에 비준되는 대신 ISO의 절차 안에서 만들어진 첫 판본이며, 그것이 왜 그것이 벤더의 기능 발표가 아니라 수십 년 누적된 규칙의 통합으로 읽히는지의 일부입니다.

이 페이지는 정밀한 변경 이력이 아니라 서술적 방향 제시입니다. 날짜는 연도 단위로 주어지며, “1.1부터 1.7까지”는 10년이 넘는 점진적 사양들을 의도적으로 한 줄로 압축합니다. 판본 간의 정확한 조항 수준 차이가 필요하다면, 그것은 다른 문서입니다.

Historical PDF versions as an output target — edition availability
EditionAvailability
Core

Core는 기본적으로 PDF 2.0을 작성하며, 프로파일이 요구할 때 더 오래된 1.7 및 1.4 파일 구조를 직렬화할 수 있습니다. 그것은 이 버전들의 라이터이지, 박물관이 아닙니다. 그것은 다른 도구가 수십 년 전에 생성한 임의의 레거시 파일을 읽거나, 복구하거나, 충실하게 재구성하기로 약속하지 않습니다.

ProAvailable
EnterpriseAvailable

NextPDF는 그 계보를 존중하는 PDF 2.0 엔진이지, 지금까지 만들어진 모든 PDF의 보편적 역사가는 아닙니다. 여기서의 동작은 그것이 작성하는 파일을, 그것이 대상으로 하는 판본에 고정하여 기술합니다. 그 파일들이 내부적으로 어떻게 구조화되는지, 그리고 2.0이 구체적으로 무엇을 바꿨는지는 아래 페이지에서 다룹니다.

PDF는 항상 읽기가 무료였나요? 아니요. 리더는 비교적 일찍 무료가 되었지만, PDF 1.0은 유료 제품으로 출시되었습니다. 무료 읽기, 유료 작성이 이 포맷을 보편화한 모델입니다.

PDF 2.0은 더 오래된 파일과의 호환성을 깼나요? 대체로 아닙니다. 공유 구조는 변하지 않았으며, 새 기능은 더 오래된 리더가 인식하지 못하는 것을 무시할 수 있도록 설계되었습니다. 2.0 전용 기능은 보통 1.7 리더에 의해 존중되지 않으며, 리더는 그것을 건너뛰거나, 기능과 리더에 따라, 불완전하게 폴백할 수 있습니다.

NextPDF는 왜 여전히 오래된 구조를 작성하나요? PDF 위에 빌드된 적합성 프로파일 — 특히 일부 PDF/A 레벨 — 이 더 오래된 파일 형태에 비추어 정의되었고 그것들을 요구하기 때문입니다. 과거는 폐기된 것이 아니라 지원되는 출력 대상입니다.

  • PDF가 실제로 무엇인지 — 이 역사가 만들어 낸 객체 모델, 상호 참조 테이블, 그리고 트레일러.
  • PDF 2.0: 무엇이 바뀌었나 — 1.7과 2.0 기준선 간의 조항 수준 차이.
  • 표준 지형 — ISO 32000이 NextPDF가 추적하는 더 넓은 표준 연합 가운데 어디에 자리하는지.
  • 보관과 PDF/A — 이 역사에서 나온 더 오래된 파일 구조가 왜 여전히 필수 출력 대상인지.
  • PostScript — Adobe의 1984년 프린터용 페이지 기술 언어로, 완전한 프로그래밍 언어입니다. PDF는 그 그리기 모델은 물려받았지만 프로그래밍 가능성은 버렸습니다.
  • Camelot — John Warnock의 1991년 메모에서 나온, PDF가 된 그 작업의 내부 프로젝트 이름입니다.
  • PDF 1.0 — 1993년 Acrobat과 함께 출시된, 처음 발행된 PDF 사양입니다.
  • ISO 32000-1 — PDF 1.7의 2008년 ISO 채택으로, 이 포맷이 개방된 국제 표준이 된 첫 번째입니다.
  • ISO 32000-2 (PDF 2.0) — Adobe가 발행하는 대신 ISO 안에서 전적으로 작성되고 소유된 첫 PDF 판본입니다.
  • 적합성 프로파일 — 기본 PDF 위에 층을 이루는 더 엄격한 표준(예를 들어 보관을 위한 PDF/A)으로, 흔히 특정한, 때로는 더 오래된 파일 구조에 비추어 정의됩니다.