2007년 3월 26일 월요일

TreeView를 지원하는 PDF 뷰어 컨트롤

TreeView를 지원하는 PDF Viewer 컨트롤인 WizPDF Viewer 트리뷰 지원 버전을 사용하면 다음과 같이 좌측에 트리를 추가해서 여러 개의 PDF 파일을 쉽게 보여줄 수 있다.

 

WizPDF Viewer를 사용하면 다음과 같은 장점을 가진다.(엄밀히 말하면 다음과 같은 기능을 위해서 만든 특수한 PDF 뷰어다^^)

1. Adobe Acrobat Reader가 필요 없다.

2. 로컬에 저장하는 것을 막을 수 있다.

3. 웹브라우저에 임베딩할 수 있으므로 기존 솔루션에 통합하기 쉽다.

4. DRM에 걸린 PDF 파일과 같이 암호화된 PDF 파일을 실시간으로 복호화해서 보여줄 수 있으므로 보안성이 뛰어나다.

5. Adobe Reader에 비해서 로딩 속도가 빠르다. 웹에 있는 PDF 파일을 읽는데 주로 사용되고 있다보니 데모 체험시에는 로딩이 느리다고 생각할 수 있으나 로컬에 있는 파일은 순식간에 불러온다.

 

한 번 써보고 싶은 분들은  http://www.wizpdf.co.kr/demo/viewer.jsp 에 가보시길^^;

그리고 배너 버전은 비상업적인 용도에 한해서 무료로 사용할 수 있다.


 

PDF/A란? Part 5: PDF/A와 관련한 여러 가지 이슈

포스팅 업데이트 중!!!

 


1. PDF/A만 도입하면 끝이다?

PDF/A가 아무리 ISO 표준으로 올라갔고 여기저기에서 PDF/A를 외쳐도 PDF/A만으로 뭐가 되는 것은 아니다.



장기간 문서를 보존하려면 PDF/A이외에도 고려해야 하고 구축해야 할 것들이 너무나도 많다. 따라서 PDF/A는 문서의 장기 보존을 위한 출발점으로 봐야 한다.



실제로 국내외의 사례를 볼 때에도 PDF/A와 자체 포맷을 같이 사용하는 경우가 많고, 또한 접근 제어를 위한 외부 시스템을 따로 개발하는 경우도 많다.



Part 4에서도 언급했듯이 PDF/A는 기본적으로 모든 사람들이 모든 곳에서 접근할 수 있도록 하고 있다. 하지만 현실에
서는 이렇게 할 수 있는 경우가 별로 없지 않은가? 예를 들어서 국가의 기밀 문서를 누구나 볼 수 있게 하면 안된다든지...



따라서 PDF/A를 도입하는 많은 경우에 접근 제어를 위한 시스템을 추가로 구축하는 경우가 많을 것으로 예상한다.



PDF/A-2에서 전자 서명을 비롯한 추가 스펙을 정의하고 있긴 하지만 때로는 PDF/A에 공인 인증서로 전자서명을 한다
든지, 아니면 특정 기능을 더 넣고 싶어하는 사용자/업체도 많을 것이다. 이러한 경우에는 자체적인 파일 포맷을 개발
하고 그 안에 PDF/A 파일을 포함시키는 형태로 진행될 소지가 크다.



실제로 이미 이러한 형태로 진행되고 있는 프로젝트들이 있다.



이 이외에도 PDF/A 파일을 보관하기 위한 하드웨어 구성 및 백업 시스템 구현 등 문서 장기 보존 시스템의 구축을 위
해서는 고려해야할 것이 너무나도 많다.



그나저나 다들 백업은 열심히 하시길....^^





2. PDF/A 뷰어 문제


1) 전용 포맷과 PDF/A 파일이 결합되어 있는 경우



접근 제한 기능과 같은 추가 기능이 필요한 경우에 PDF/A 파일을 자기들이 만든 파일에 임베해야 하는 상황을 생각해
보자.


이럴 때 PDF/A 파일을 보여주려면 그 파일에서 PDF/A 부분만 빼내서 사용자에게 보여줘야 할 것이다. 그런데
PDF/A 파일을 Adobe Reader로 보여줘야 한다면 보안상 중대한 문제가 발생한다.


바로 PDF/A 파일을 로컬에 저장해야 하고, 그 파일은 사용자에 의해서 언제든지 유출될 수 있다. 이 문제를 해결하려
면 메모리에서 PDF/A 파일을 바로 불러올 수 있는 PDF 뷰어 필요하다. 덤으로 자신들의 전용 뷰어에 임베딩되면 더
좋을 것이다.



이런 상황에서 WizPDF Viewer (http://www.wizpdf.com)를 이용하면 이런 문제를 모두 해결할 수 있다. WizPDF
Viewer는 메모리상에서 PDF 및 PDF/A 파일을 바로 불러올 수 있기 때문이다. 게다가 로컬에 저장하지 못하도록 하
는 기능도 제공된다.




2) 기존 PDF 뷰어와의 호환성 문제





3. 글꼴과 관련된 문제


1) 글꼴 임베딩 문제에 대하여







4. XML 메타데이터와 관련된 이슈







5. 얼마나 표준을 잘 지킬려나?

PDF/A란? Par 4: 문서의 장기 보존을 위한 PDF/A의 접근 방향

 

어떻게 보면 이 내용이 맨 처음에 다뤄져야 하는데 고리타분한 내용부터 적으면 쉽게 질린다^^;

 

ISO 19005-1:2005(PDF/A-1)FAQ를 보면 다음과 같이6개의 사항을 지향하고 있다. (6개의 사항의 제목만 가져왔을 뿐 설명은 내 맘대로 적었다.)

 

1.      장치 독립성(Device Independent)
- 너무 당연한 이야기이고 모든 PDF 규격에서도 지향하고 있는 것이다. 다만 PDF/A에서는 기존 PDF 규격보다 좀더 엄격하게 정의하고 있을 뿐이다. 여기서 장치라는 것은 PC MAC이니 하는 하드웨어뿐만 아니라 뷰어나 에디터 같은 소프트웨어까지 지칭한다.

2.      자기 포함(Self-Contained)
- 화면에 보여주거나 인쇄할 때 필요한 모든 것이 PDF/A 파일 자신 안에 다 있어야 한다는 것이다. 이러한 관점에서 봤을 때 PDF안에 외부 리소스에 대한 참조가 있으면 안되는 것이 당연하게 생각될 것이다.
자기 포함과 관련된 뷰어 이슈가 하나 있다. PDF/A 호환 뷰어는 반드시 PDF/A 파일 안에 있는 임베딩된 폰트를 사용해야 한다는 것이다. 같은 이름의 글꼴이 로컬에 있더라도 그것을 사용하면 안 된다. Adobe Reader의 경우 로컬 글꼴을 사용할지 말지 지정할 수 있는 옵션을 제공한다
.

3.      자기 기록(Self-Documenting)
-보통 Self-Description이라고 하는데 PDF/A뿐만 아니라 XML 관련 기술에서도 쉽게 볼 수 있는 사항이다. 간단히 설명하면 PDF/A 파일에는 자신의 설명에 필요한 XMP(eXtensible Metadata Platform, Adobe에서 제안하는 공통 메타데이터 기술 방식) 메타데이터가 들어있어야 한다는 것이다. 또한 PDF/A 파일 안에 임베딩되기만 한다면 XMP가 아닌 다른 메타데이터를 넣어도 된다고 한다. 그러나 실제 PDF/A 검증 툴을 이용해서 테스트해보면 지정된 XMP 데이터 내용이 반드시 들어가있어야 한다.

4.      구속 없음(Unfettered)
- 이건 한글로 번역하기 참 애매한 단어이다. PDF/A-1에서는 암호화를 금지한다. 누구나 PDF/A 파일을 열어볼 수 있어야 한다는 것이다. 게다가 100년 지나서 비번이 생각안나서 파일을 열지 못하는 상황을 미연에 방지할 수 있다^^;
그런데 상황에 따라서 PDF/A에 대한 접근 제어가 필요할 수 있는데 이런 건 PDF/A 자체에서 처리할 게 아니라 외부에서 처리해야 한다. 그래서 PDF/A 관련 프로젝트들을 보면 PDF/A 파일 외부에 접근 제어 시스템을 붙이는 경우가 많다
.

5.      이용성(Available)
- 아 번역 정말 이상하다. 이 사항은 PDF/A의 스펙이 공개되어서 누구나 로열티 없이 사용할 수 있어야 한다는 것이다. 복사비(근데 ISO에서 생각보다 비싸게 판다)만 내면 누구나 ISO에서 PDF/A의 스펙을 구할 수 있다. 돈 없으면 가까운 대학 도서관에 가서 빌려보라^^;

6.      채택(Adoption)
- PDF/A를 구현하고 도입하기가 쉬워야 한다는 것이다. PDF/A를 많은 곳에서 사용해야 PDF/A에 대한 지원도 지속된다는 것이다.

 

 

PDF/A를 제외하고 이러한 6가지 요구 사항에 가장 근접한 문서 포맷은 PDF라는 사실에 이의를 제기할 사람은 거의 없지 않을까 싶다. 이러니 PDF/A PDF로부터 파생될 수밖에 없었을 것이다.

 

 

WizPDF(http://www.wizpdf.com)에서는 PDF 생성 시 여러가지 옵션들을 켜고 끌 수 있게 함으로써 이러한 6가지 요구를 만족시킬 수 있도록 하고 있다.

 

예를 들어서 PDF 1.4 스펙에서는 40비트와 128비트 암호화를 지원하는데 PDF/A와 호환되게 하려면 모든 암호화 옵션을 사용하지 않도록 하면 된다. 물론 각 변환 파일 단위별로 조절이 가능하므로 어떤 파일을 PDF파일로 만들고 어떤 파일은 PDF/A 호환 파일로 만드는 것이 가능하다. 또한 PDF/A에 호환되도록 하기 위해서 원본 파일 첨부 옵션을 사용하지 않도록 하는 등 PDF와 PDF/A에 모두 대응될 수 있도록 하고 있다.

 

 

마지막으로 PDF/A가 누구에 의해서 제안되었으며 어떤 단체들이 참여해서 만들어지게 되었는지는 궁금해할 사람도 별로 없거니와 PDF/A를 써먹는데 별 필요없는 내용이므로 생략한다. ISO, Adobe, AIIM 정도의 이름만 알면 충분하다.

PDF/A란? Part3: PDF/A의 종류

PDF/A 규격에도 종류가 있다?

 

 

PDF/A 관련 자료를 보다 보면 PDF/A-1a이니 PDF/A-1b니 하는 얘기가 나온다.

 

 

사실 PDF/A 2개의 파트로 구분된다.

PDF/A-1은 는 PDF/A 규격의 파트1이고 PDF/A-2는 파트2이다.

 

 

 

PDF/A-1

 

PDF/A-1 PDF/A Standard(ISO 19005-1): Part 1에 대한 규격이다. PDF/A-2는 아직 표준이 제정되지 않았으므로 현재로서 PDF/A의 모든 표준이라고 볼 수 있다.

 

 

PDF/A-1 PDF/A-1aPDF/A-1b로 나눠진다.

 

a b가 무엇을 의미할까? PDF/A를 모르던 시절에는 알파버전, 베타버전인줄 알았다^^;

하지만 절대 그런 의미가 아니고 레벨 A, 레벨 B를 의미한다.

 

 

PDF/A-1a PDF/A-1의 레벨 A로서 PDF/A-1에 대한 모든 적합도를 의미하며 PDF/A-1b보다 더 강력하다. 이에 비해 PDF/A-1b PDF/A-1의 레벨 b로서 PDF/A-1에 대한 최소 적합도를 뜻한다.

 

간단히 설명하면 랜더링된 시각적 모양(rendered visual appearance - 한 마디로 PDF/A 뷰어로 봤을 때 화면에 보이는 모양)만 보장하고 있어서 수십 년이 지난 후에 봐도 원본 모양이 유지가 되면 PDF/A-1b를 만족하는 것이다. 일반적으로 PDF/A-1b를 많이 사용될 것이다.

 

PDF/A-1b를 많이 사용될 것 같다고 생각하냐구? 이것은 PDF/A-1a에 대한 내용을 보면 알 수 있다. PDF/A-1a에서는 단순히 랜더링된 시각적 모양의 보장뿐만 아니라 텍스트의 논리적 구조 및 배치까지 보장해야 한다.

 

 

그럼 이걸 어떻게 보장할까? 바로 태그(tag)를 이용해서 한다. 어떤 PDF 파일을 Adobe Reader로 열어서 문서의 등록정보를 보면 Tagged PDF 속성이 true로 되어 있는 파일이 있는데 이러한 PDF 파일에는 문서의 구조 및 배치에 대한 정보가 들어가 있다는 것이다. Tagged PDF 파일을 PDA에 넣고 PDA Adobe Reader로 열어보면 PDA에서 보기 좋게 텍스트가 재배치되는 것을 경험할 수 있다(항상 경험할 수 있는 것은 아니다^^;). 즉 컴퓨터 모니터로만 잘 보여도 된다면 PDF/A-1b이면 충분한데, PDA같은 장비에서도 제대로 보이게 하고 싶으면 PDF/A-1a를 준수하도록 해야 한다.

 

 

a b의 차이는 태그의 유무가 전부라고 볼 수 있는데 이 태그를 넣는 것이 쉽지도 않을뿐더러(내가 아는 PDF 프린터 드라이버 중 PDF/A-1a를 지원하는 것은 하나도 못 봤다^^;) 모니터에서만 잘 보여도 충분한 경우가 많을 테니 당분간은 PDF/A-1b가 많이 사용되지 않을까 싶다.

 

 

이러한 이유로 WizPDF Server(http://www.wizpdf.com)에서도 PDF/A-1b만 지원하고 있다. 엄청난 AI가 동원되지 않는 한 PDF/A-1a까지 지원하는 것은 무리일 듯 싶다^^;(이건 다른 범용 PDF 변환 서버에서도 마찬가지임)

 

 

그리고 눈여겨볼 점이 하나 있는데 PDF/A의 태그는 텍스트에만 해당된다. 따라서 스캔한 TIFF 이미지를 PDF로 만드는 경우와 같이 PDF 파일 안에 텍스트가 하나도 없는 경우에는 a b니 하는 것은 의미가 없어진다.

 

 

 

 

PDF/A-2

 

PDF/A-2 PDF/A Standard(ISO 19005-1): Part 2에 대한 규격이다. PDF 1.4 버전이 나온 이후로 벌써 시간이 꽤나 흘러서 PDF 1.7까지 나와버렸다. 그러니 PDF/A도 버전업을 해야 하지 않겠는가? 그래서 PDF에 있는 전자 서명(digital sign)과 같은 규약(PDF/A-1에도 전자 서명이 들어가 있긴 하지만 미약하다)들을 PDF/A-2에 포함시키려는 노력을 하고 있다. 물론 PDF/A-2는 아직 표준화 작업이 끝나지 않았다.

 

그리고 PDF/A-2 PDF/A-1에 영향을 미치지 않을 것이다. PDF/A-2를 지원한다고 자동으로 PDF/A-1을 지원하는 것은 아니라는 것이다. 아마도 PDF/A-2에는 PDF/A-1에 포함되지 않으면서 PDF/A-1에 영향을 주지 않는 규약들이 추가될 것 같다.

 

 

아무튼 다음 사항들이 PDF/A-2에 추가될 예정이라고 한다.

 

l        JPEG 2000 이미지 압축

l        보다 정교한 전자 서명 지원
- (PDF/A-1
의 전자 서명은 외부 종속성이 없도록 하기 위해 Self-signing만 지원한다.)

l        오픈 타입 글꼴(Open Type font)
폰트 문제는 깊이 들어가면 엄청 어렵다^^;

l        3D 그래픽
- PDF
최신 규격에 이미 들어가 있다. 공학 쪽에서는 STEP이나 IGES와 같은 포맷들이 오래 전부터 있었는데 이것까지 다 먹으려고 하는 듯

l        오디오 및 비디오 컨텐츠
-PDF/A-1
에서 빼버렸는데 아무래도 포기할 수 없나 보다. 요즘은 동영상 세상이니^^

l        다른 PDF 기반 표준들과의 일관성
- PDF/X-1, PDF/X-2, PDF/X-3, PDF/A-1, PDF/E,
PDF 버전 등 PDF기반 표준이 참으로 많기도 하다.

PDF/A란? Part 2: - PDF VS PDF/A

 

PDF PDF/A에는 어떤 차이점이 있을까?

 

사실상 PDF/A PDF 1.4의 부분집합이라고 말할 수 있다.

 

 

PDF/A 표준의 제정 시도는 2002년에 시작되었다. 이 당시에 Adobe에서는 PDF 1.4까지 발표했었는데 앞으로 나올 PDF 규격을 기반으로 할 수는 없었기 때문에 이미 존재하는 PDF 1.4를 기반으로 하기로 결정한 것이다. 게다가 PDF는 기존에 사용하던 TIFF같은 포맷에 비해서 엄청나게 좋은 포맷이기도 했다.

 

 

그런데 PDF 1.4 스펙에 보면 장기 보존 문서에는 별 필요 없는 사항들이 있다.

예를 들어서 사운드나 비디오 파일의 첨부가 그것인데 50년 후에 MP3 AVI 파일을 플레이 할 수 없을 수도 있지 않은가이와 같이 PDF/A PDF 1.4 스펙에서 특정 프로그램이나 OS등에 종속적인 부분, 그리고 장기 보존에 필요 없는 사항들을 제거해서 만든 규격이기 때문에 PDF 1.4의 부분집합으로 볼 수 있는 것이다.

 

 

그럼 어떤 사항들이 빠졌나?

한 마디로 장기 보존에 필요가 없는 것들은 전부 빠졌다고 보면 된다.

 

대략 다음과 같은 사항들이 빠졌다. - 아래의 사항들은 반드시 빼야 하는 것보다는(must) 사용하지 않기를 권장하는 것들이다(may).

 

l        암호화(encryption)
-
당연하다. 나중에 비번 몰라서 못 열면 안되니까^^;*

l        LZW 압축

l        파일 첨부
-
첨부한 파일이 특정 프로그램이나 시스템에 종속적일 수 있으므로

l        외부 리소스에 대한 참조
-
해당 리소스가 없어져버린다면?

l        투명
-
.....이건 아마도 투명을 처리하는 방식이 뷰어마다 다르기 때문에 빠진 듯(실제로 Adobe Reader의 버전마다 Transparency flattening 방식이 다르다.)

l        멀티미디어
-
이것도 특정 프로그램이나 시스템에 종속적이다.

l        자바스크립트
- PDF
에 자바 스크립트가 들어갈 수 있다는 사실을 아는지? 뭐 이것도 PDF/A에는 별 필요가 없는 사항인 듯.

 

 

반대로 어떤 사항들은 필수가 되었다.

한 마디로 100년이 지난 후에도 제대로 보여주는데 필요한 것들은 필수로 넣어야 한다. 이거 안 지키면 PDF/A-1 검사 툴로 돌리면 failed 나온다.

 

l        사용한 모든 폰트의 임베딩
-
너무 당연하다. 물론 하나도 빼먹지 않고 전부 임베딩 해야 함

l        장치 독립적인 컬러(device-independent color)
-
간단히 말해서 PDF 1.4 스펙에 있는 컬러만 사용하라는 거다. 이 이외의 컬러는 사용하지 말 것. 근데 RGB CMYK이외에도 또 다른 컬러 표현 방식이 있나 보다^^;

l        XMP 메타데이터
-Self-description
에 필요하므로

 

 

 

PDF/A PDF 1.4의 부분집합이다 보니 기존의 PDF 제품들 중 상당수가 PDF/A에 대응되거나 또는 약간의 수정만으로 대응이 가능한 경우가 많다. 즉 기존의 수많은 PDF 인프라의 상당수를 재활용할 수 있다는 점에서 PDF/A는 이미 출발선 저 앞쪽에 가 있는 것이다.

 

 

물론 WizPDF 제품군(http://www.wizpdf.com)은 PDF 1.4에 대응되면 이 중에서 WizPDF Server에는 PDF/A 파일을 생성하는 기능이 제공된다.

 

 

PDF/A 란? - Part 1: PDF/A에 대한 소개 - 들어가며

PDF/A가 뭐지?

올해 들어서 국가 기관 문서 분야에서 PDF/A라는 녀석이 화두가 되고 있다. 그런데 PDF는 뭔지 알겠는데 PDF/A는 뭐지?

PDF/A는 PDF 스펙을 기반으로 ISO가 제정한 장기 보존을 위한 전자 문서 형식이다.

 

PDF 관련 기술들 중에 PDF/A니 PDF/X니 뭐 이런 것들이 좀 있는데 쉽게 말하면 PDF 스펙의 권리는 Adobe가 가지고 있고 PDF/A나 PDF/X의 권리는 ISO에서 가지고 있다.

 

최근에 Adobe가 PDF 1.7 스펙 전체를 ISO 표준으로 상정했는데, MS의 XPS에 대한 견제로도 생각이 되며 교환용 문서의 표준의 주도권을 확실히하려는 것 같다.

 

PDF/A는 사실상 PDF 스펙의 subset이다. PDF/A는 PDF 1.4 버전을 기반으로 해서 파일 첨부나 멀티미디어 파일 임베딩 등 장기 보존 문서에 필요없는 기능들을 제거해서 만든 표준이라고 보면 된다.

 

또한 장기 보존이 주 목적이므로 사용된 모든 글꼴이 임베딩되도록 규정하고 있다.

 

재미있는 사실이 있는데 대부분의 PDF 생성 제품들을 보면 너무나 당연하게 로컬에 존재하는 글꼴들- Arial와 같은 글꼴 - 은 기본적으로 폰트 임베딩이 안되도록 설정되어 있다.

 

따라서 PDF/A 표준을 준수하려면 사용되는 모든 글꼴을 임베딩하도록 설정을 변경해야 한다.그러나 이것만 가지고는 PDF/A 호환 PDF 파일을 만들 수는 없다. PDF/A의 상세한 특징에 대한 것은 다른 포스팅에 자세하게 적겠다.

 

PDF/A는 뭘로 보면 되나?

 

PDF/A가 PDF의 서브셋이다보니 PDF 1.4 버전 이상을 지원하는 대부분의 PDF뷰어라면 PDF/A도 읽을 수 있을 것으로 생각되는데, Adobe Reader 8은 확실히 지원된다.

 

또한 Adobe Acrobat의 도움말을 보면 Adobe Reader 5, Acrobat 5 이상에서 볼 수 있다고 한다. 잘 생각해보면 Adobe가 Acrobat 5를 출시하면서 PDF 1.4 스펙을 만들었으니 당연한 것이라 할 수 있겠다.

 

물론 WizPDF Viewer(http://www.wizpdf.co.kr/product/viewer.jsp)에서도 읽을 수 있다.