최근 PDF문서를 생성하는 모듈을 개발하고 유지보수하는 작업이 업무의 큰 부분을 차지하게 되면서, PDF문서와 씨름하는 시간과 빈도가 많아졌다. 현재 webPonent Grid 제품도 기본 기능으로 PDF출력을 제공하고 있는데, 정작 PDF 문서 포맷이 어떤 역사를 가지고 있는지는 모르는게 많았다. 이에 따라 PDF의 배경에 대해 알아보게 되었고 그 내용을 이번 포스팅에서 공유해 보도록 하겠다.
PDF의 시작, The Camelot Project
PDF 문서포맷은 1991년 Adobe의 공동설립자인 John Warnock의 'The Camelot Project'로부터 시작되었다. 'The Camelot Project'에 대해 설명한 문서에서는 프로젝트의 목적을 당시 기업들이 직면한 서로 다른 시스템과 어플리케이션간의 커뮤니케이션에 대한 관심을 해결하기 위함이라고 설명하고 있다.(This project’s goal is to solve a fundamental problem that confronts today’s companies. The problem is concerned with our ability to communicate visual material between different computer applications and systems.)
당시 Adobe사는 Page Description Language인 PostScript를 통해 이 문제를 해결하려는 노력을 했다. 그 결과로 인쇄물과 화면상에서 범용적으로 문서를 표현하는 것에는 어느정도 성공을 거두었으나, (당시의 하드웨어 성능 상) 강력한 성능의 컴퓨터 혹은 프린터가 필요하다는 단점이 있었다. Camelot Project는 이러한 단점을 보완하고 PC에서도 호환이 되고 CGA, EGA, VGA 등의 고해상도의 이미지등을 지원하는 포맷을 만드는데 목표가 있었다. 즉, PDF는 그 당시에 존재하지 않았던 전자문서에 대한 범용적인 공유방법에 대한 해결방안을 제시하는 프로젝트로 시작되었다.
그렇게 시작된 프로젝트는 1992년 가을까지 개발되고, 1993년 Adobe사가 PDF 1.0과 Acrobat 1.0을 발표하면서 세상에 등장했다. 하지만 당시 Adobe Acrobat를 무료로 배포하지 않았고, PDF 초기버전은 당시 환경 상 너무 큰 파일 사이즈와 외부로 Hyperlink가 지원되지 않는 등 기능면에서 조금 부족함이 있었다. 또한 당시에는 Envoy, Common Ground Digital Paper, Farallon Replica등 유사한 파일 포맷에 대한 경쟁이 있었다. 이러한 이유로 발표 직후부터 폭발적으로 수용되지는 않았다. 하지만, 이후 Adobe사가 Acrobat Reader를 무료로 배포하기 시작하고 PDF포맷을 적극적으로 지원하기 시작하면서 PDF는 온라인상 인쇄용 문서의 실질적 산업표준(De facto standard)가 되었다.
PDF/X, PDF/E, PDF/A
PDF가 널리 보급되면서 ISO(International Organization for Standardization)이 PDF의 용도에 따라 정의하였다. 그것이 PDF/X, PDF/E, PDF/A이다. 간단하게 설명하면 PDF/X는 그래픽 콘텐트 교환에 적용되며, PDF/E 표준은 엔지니어링 문서의 상호 교환에 적용된다. 또한 PDF/A는 전자문서의 장기보관에 적용하기 위하여 PDF 1.4스펙을 기반으로 제정되었다.
PDF/A는 PDF 1.4 스펙을 기반으로 파일 첨부나 멀티미디어 파일 임베딩 등 장기보존 문서에 필요없는 기능들을 제거해서 제정한 표준이기 때문에 사실상 PDF 1.4의 subset으로 볼 수 있다. 다음은 PDF 1.4스펙과 비교하여 PDF/A에서 사용하지 않기로 권장하는 대표적인 항목들이다.
- 암호화(encryption)
- LZW 압축
- 파일 첨부
- 외부 리소스에 대한 참조
- 투명 설정
- 멀티미디어
- 자바스크립트
- Font embedding
- Device-independent color
- XMP 메타데이터
PDF의 국제 표준문서 지정
이후 2008년 7월, ISO에서는 PDF 1.7버전을 국제표준으로 지정했다(ISO 32000-1). 이 국제표준지정으로 인해 PDF파일 포맷은 더이상 Adobe의 소유가 아니고 ISO로 관리권을 넘기게 되어 이후 업데이트 및 개발버전들은 모두 ISO에서 관리하게 되었다.
PDF의 장점
이제는 완전히 보편화되어 있는 PDF문서의 대표적인 장점들은 다음과 같다.
- 다양한 플랫폼, 디바이스, OS에서 동일한 문서 형식으로 보여짐
- 전자 문서 교환을 위한 ISO표준 준서(De jure)
- 전자 서명
- 암호화
- 폰트, 오디오, 이미지 등을 하나의 파일로 embedding가능 (외부 리소스 불필요)
한 부분씩 나누어 설명해 보도록 하겠다.
- Header
- Body
- Boolean values
- Integer and real numbers
- Strings
- Names
- Arrays
- Dictionaries
- Streams
- Null
- Cross-reference table
- Trailer
Trailer는 PDF 파일 내에서 cross-reference table과 특정 object들을 빨리 찾을 수 있게 해준다. 이 부분을 찾을 때는 파일의 맨 끝에서부터 읽어한다. 파일의 가장 마지막 라인은 '%%EOF'로 끝나는데 그 두 줄 위에 startxref라는 키워드와 파일의 시작에서부터 마지막 cross-reference section의 xref키워드 까지의 byte수를 나타내는 offset이 존재한다.startxref 키워드 앞에는 trailer dictionary가 존재하는데, trailer 키워드로 시작하고 '<<'로 시작해서 '>>'로 끝나는 구문 안에 key value 형태로 값이 할당되어 있다. trailer dictionary의 주요 항목들은 다음과 같다.
Size : 파일 내 모든 cross-reference table 내의 총 항목(entry) 갯수 (필수)
Prev : 파일의 시작부터 이전 cross-reference section까지의 바이트 offset (파일이 하나이상의 cross-reference section을 가질 때만 표현됨)
Root : 해당 PDF문서의catalog dictionary 이다. (필수)
생성된 후 1번도 업데이트 되지 않은 파일의 trailer는 다음의 형태를 가지게 될 것이다.
trailer
<< /Size 22
/Root 2 0 R
/Info 1 0 R
/ID [<81b14aafa313db63dbd6f981e49f94f4>
<81b14aafa313db63dbd6f981e49f94f4>
]
>>
startxref
18799
%%EOF
PDF 파일이 업데이트 될 경우 전체 내용을 다시 쓰지는 않는다 그 대신 변화된 내용만 파일의 끝에 덧붙여지는 방식을 사용하고 있다. 즉 Body 가 추가됐을 때는 추가된 Body가 파일의 뒤에 붙고, 뒤이어 Cross-reference항목이 추가되고, Trailer까지 추가되는 방식이다. 그 결과를 그림으로 표현하면 다음과 같다.
이 때 cross-reference section은 내용이 바뀌거나 삭제된 object항목이 있을 경우만 추가된다. 추가된 Trailer는 그 이전 trailer의 모든 항목을 가지고 있되, 바로 전 Cross-reference section의 위치를 가지고있는 /Prev 항목이 포함된다. 각각의 trailer는 자신의 end-of-line(%%EOF)로 끝난다.
References
- https://acrobat.adobe.com/kr/ko/products/about-adobe-pdf.html
- The Camelot Project(http://blogs.adobe.com/acrobat/files/2013/09/Camelot.pdf)
- https://ko.wikipedia.org/wiki/PDF#cite_ref-3
- http://help.adobe.com/ko_KR/acrobat/pro/using/WSd7ad1123a4c5dffe-5183c8012b97790144-8000.html
- http://pdfmania.blogspot.kr/2007/03/pdfa-part-2-pdf-vs-pdfa.html
- http://www.test104.com/kr/tech/2511.html
- http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf
'유용한 정보' 카테고리의 다른 글
2015년 취업시장의 HOT ISSUE (0) | 2015.12.28 |
---|---|
고국 돌아갈 때 꼭 가져가고 싶은 음식 1위? (0) | 2015.12.17 |
설날에 듣기 싫은 잔소리 - 학생&직장인 (0) | 2015.11.04 |
Microsoft tech days 2015 Korea 방문기 (0) | 2015.10.30 |
32회 T Dev Forum 디지털 비즈니스를 위한 Open API 방문기 - 2부 (0) | 2015.10.02 |