-
Notifications
You must be signed in to change notification settings - Fork 73
Introduction
- 버젼 5.0 이상의 hwp 포맷 분석을 위한 참조 구현
- 파일 포맷에 대한 최대한의 정보/이해 습득
- 가능한 한 동일한 쪽(Page) 레이아웃을 구현하기 위한 뷰 모델 구현
- 최대한의 호환성, 최소한의 의존성 (python 2.3 지원)
- HWP 5.0 파일 쓰기 지원
- UI, 뷰어 등 frontend 구현
- 최적화된 속도/메모리 사용
최소 노력으로 최대 확장성을 얻기 위해, pyhwp는 HTML, ODT 등 특정한 frontend 출력 대신 HWP 파일 형식을 최대한 분석하여 그와 equivalent한 정보를 담은 XML로 변환하는데만 집중한다. 이 XML 포맷은 XSLT를 통해 비로소 다양한 frontend 포맷으로 변환된다.
pyhwp 출력 XML 포맷은 다음의 조건을 충족하는 것을 목표로 한다.
- HWP 5.0 파일과 동등한 정보를 담고 있어야 한다.
여기서 "동등함"은 동일한 인쇄물을 얻을 수 있는 수준의 정보를 담고 있음을 의미한다. 따라서 문단, 글자, 스타일 등의 기본적인 정보 외에도, 레이아웃과 관련된 정보도 보전해야 한다. HWP 5.0 포맷이 지원하는 변경이력 관리 등, 인쇄와 무관한 정보는 현재로서는 지원하지 않는다.
만약 HWPML이 이러한 조건을 충족한다면, 이를 출력 포맷으로 선택할 수 있을 것이다. HWPML을 출력 포맷으로 선택하면, 추가적인 XSLT 없이도 기존 HWPML에 기반한 시스템들과 연동할 수 있다는 이득을 얻을 수 있다. 그러나 짧게 훑어본 느낌으로는 HWPML로는 동일 인쇄물을 얻을 정도의 동등함을 갖지 않는 듯 하여, 현재로선 선택하지 않았다.
- 각 frontend 포맷으로의 XSLT 구현이 지나치게 어렵지 않아야 한다.
적어도 HTML5와 ODT 등으로의 XSLT 구현은, 주요 Element들을 1:1 변환하면 사람이 문서 내용을 대략 알아볼 수 있는 정도의 변환이 가능한 정도를 목표로 한다. 그러나 기본적으로 다른 포맷으로의 XSLT 구현 자체는 pyhwp의 범위 바깥이며, 또한 문서 포맷 간 근본적 차이를 workaround 하는 것 역시 pyhwp의 목표가 아니다.