'Translator'에 해당되는 글 1건

  1. 2008/08/27 Open XML 관련 오픈 소스 프로젝트

지금까지 지구상에 존재하는 가장 많은 문서 포맷이 Microsoft Office 문서, 특히 오피스 바이너리 포맷 형태 (doc, xls, ppt) 의 문서이다. 바이너리 포맷이기 때문에 이들 문서를 프로그램에서 다루기 힘들며, 일반적으로 텍스트기반 문서 포맷보다 유연성이 떨어진다. 따라서 이들 바이너리 문서 포맷을 ISO가 문서 표준 포맷으로 지정한 XML기반의 Open XML이나 ODF와의 호환성 혹은 컨버터에 대한 관심이 높아지고 있다. 이전 버전의 오피스 문서 (doc, xls, ppt)를 Open XML 기반의 문서로 변환시켜주는 툴 및 가이드를 제공하기 위한 프로젝트가 진행중이다.

image

현재 M2 (Milestone 2) 버전이 공개되어 있으며 각 파일별로 Translator가 제공되고 있다. 즉, 파워포인트용 ppt2x.exe, 엑셀용 xls2x.exe, 워드용 doc2x.exe가 각각 소스코드와 함께 공개되어 있다. 이 Translator 프로젝트에는 오피스 제품용 OpenXML/ODF 변환기를 제공하는 독일 기업인 DIaLOGIKa가 핵심 기능을 제공하고 있다. 전체 아키텍처는 다음과 같다.

architecture

예전 블로그에서 한번 소개한 적이 있지만 업데이트 차원에서 찾아보니, 2007년 5월 시작된 OpenXML4J 프로젝트가 2008년 4월 11일 베타 상태의 결과물을 제공하기 시작했다.

OpenXML4J는 자바에서 OOXML (Office Open XML), 즉, 마이크로소프트 오피스 기반의 국제 표준인 Open XML을 통해 만들어진 문서를 쉽게 사용할 수 있는 일종의 XML 관련 라이브러리이다. OOXML은 XML 기반의 몇몇 스키마와 이들을 zip 압축 형식으로 묶은 파일이기 때문에 일반 프로그래밍 언어가 제공하는 로레벨의 압축해제 API나 XML 관련 API를 통해서도 접근 가능하다. 하지만, 우리 주변의 늘 그러했듯이 몇몇 사람의 헌신적인 노고에 의해 수많은 개발자가 로레벨의 더티한 일에서 벗어나 지적 능력을 좀 더 생산적인 일에 집중할 수 있도록 만들어주는 자바 라이브러리이며 오픈 소스 형태로 개발되고 있다.

OpenXML4J 프로젝트 홈 페이지

  현재 OpenXML4J의 전체 아키텍처는 다음과 같다. 아래 그림에서 보듯이 OpenXML4J는 오픈 소스 라이브러리인 DOM4JXMLBeans를 통해 XML 처리 작업을 하고 있으며 그외 Log4J를 이용하여 로깅을 수행하고 있음을 알 수 있다.

image
또한 그림에서 보듯이 OOXML의 기본적인 파일 구성 형태라 할 수 있는 OPC (Open Packaging Convention)를 기본으로 지원하기 때문에 XPS (XML Paper Specification) 문서 포맷도 함께 지원할 수 있는 구조이며, OPC 기반의 OpenXML 문서 포맷 지원을 위해 각 구성 요소인 WordProcessingML,  SpreadsheetML, PresentationML 등 도 로드맵을 가지고 하나씩 구현해 나가고 있다. OPC는 XPS 스펙 정제 과정에서 추출되어 별도의 표준적인 파일 패키징 방식으로 만든 것으로 마이크로소프트 오피스 문서들이 이에 기반하고 있다.

OPC 및 XPS에 대한 좀 더 자세한 설명은 다음을 참조하도록 한다.
XPS Specification
Microsoft XPS Team Blog
XPS 문서 뷰어

가끔 고객사를 방문하다보면, 엑셀 등 마이크로소프트 오피스 문서의 막강한 기능을 자바 프로그래밍에서 활용하고자 고민하는 경우가 있다. 단순히 엑셀 등으로 추출해내는 것이 아니라, 엑셀 자체를 읽고 값을 변경하고 다른 문서와 병합하고 하는 등등의 작업을 자바에서 진행하기란 쉬운일이 아니다. 이런 경우 상용 패키지를 도입하여 해결하는 경향이 많았다. OpenXML4J와 같은 라이브러리가 상용 패키지 만큼의 완성도나 고수준의 API를 제공하지는 못하지만, 문제 해결을 위한 새로운 시각을 제시해줄 수 있을 것으로 생각한다. 이와는 별도로 Open XML을 지원하지는 못하지만, 즉 최신 버전의 Microsoft Office 2007을 지원하지는 못하지만, 예전버전의 오피스 문서에 대한 접근을 용이하게 해주는 라이브러리로써 Apache Jakarta 프로젝트중 하나인 POI 프로젝트가 점차 인지도를 높여가고 있다.

image

Posted by 장현춘