5P by neo 2일전 | ★ favorite | 댓글 4개
  • 개방형 문서 포맷인 HWPX의 구조와 데이터를 저장하고 관리하는 방식을 설명
  • HWPX와 기존 HWP 포맷의 차이를 설명하며, HWPX 포맷의 주요 구성 요소와 각 파일의 역할을 분석

서론

  • HWP는 바이너리 포맷이고, HWPX는 XML 파일들이 ZIP 구조로 구성되어 있다는 점이 가장 큰 차이
  • HWP 포맷의 경우 스트림이 레코드 형식으로 구성되어 있어서 데이터를 추출하기 위해 별도의 분석 과정을 거쳐야 함
    • 반면에 HWPX 포맷은 주요 파일들이 XML이기 때문에 데이터 추출이 용이

HWPX란

  • 한글과컴퓨터에서 개발한 XML 기반의 개방형 문서 포맷으로 국가 표준(KS X 6101)인 OWPML을 따르는 개방형 문서 포맷
  • OWPML은 XML 기반의 ‘개방형 워드프로세서 마크업 언어(Open Word-Processor Markup Language)’를 의미
    • 2011년 12월 30일 제정된 한국산업표준(KS)으로, 약 2년에 걸쳐 국내 문서 표준화 위원회를 통해 표준 개발이 진행
    • 국내 표준 개발에 직접 참여하고 있는 전문가들과 함께 공동 개발된 국가 표준
  • HWP 형식의 바이너리 포맷에 대한 개방성, 호환성, 보존성을 확보하기 위해 개발된 파일 형식
    • 이를 위해 XML 기반의 패키지 포맷으로 구성

HWPX 파일 구조

  • HWPX는 ZIP 파일 구조를 가진 XML 기반 포맷
  • 압축을 해제하면 여러 XML 파일과 폴더로 구성되어 있음음
  • 주요 구성 요소:
    • mimetype: 파일 형식 정보를 담고 있어 HWPX 포맷임을 확인하는 시그니처 정보
    • settings.xml: 커서 위치 등 외부 설정 요소 정보를 포함
    • version.xml: OWPML 파일 형식 버전 정보와 문서 저장 환경 정보를 담고 있음
    • BinData/: 문서에 포함된 이미지, OLE 개체 등의 바이너리 파일들이 저장
    • Contents/: 문서의 서식 정보와 본문 내용이 포함되어 있으며, content.hpf, header.xml, section0.xml 등의 파일로 구성됨
      • content.hpf : 패키징 주요 파일 목록. PF(Open Packaging Format) 표준에 따라 정의되었으며, metadata, manifest, spine 세 부분으로 나누어 구성
      • header.xml : 문서 내용과 관련된 모든 설정을 포함하며, 글자 모양, 문단 모양 등의 매핑 정보를 담고 있음
      • section0.xml : 구역별 본문 내용을 저장하며, 문서의 각 구역이 별도의 파일로 저장
    • META-INF/: manifest.xml, container.rdf, container.xml 파일이 포함되어 있으며, 암호 문서의 경우 각 파일별 암호화 정보가 저장
    • Scripts/: 문서에 저장된 스크립트 정보가 headerScripts, sourceScripts 파일에 저장
    • Preview/: 미리보기 이미지와 텍스트 파일이 담겨 있음. 파일 탐색기에서 미리보기 창을 열었을 때 표시되는 정보. 암호 문서의 경우 보안을 위해 해당 파일을 저장하지 않음

마치며

  • HWPX를 활용하기에 앞서 전체적인 구조와 내부를 구성하는 각 파일의 역할을 설명
  • 이후 시리즈에서는 실제 HWPX 문서에서 원하는 데이터를 추출하는 예제를 공유할 것
  • HWPX의 구성 요소와 데이터를 활용하는 데 도움이 되기를 바람

좋은글 감사합니다. AWS에서 생성하는 파일(보고서같은)을 HWP로 하고 싶은데, 관련 레퍼런스가 부족해 어려움이 있습니다. 현재는 Word로 하고 있구요. 혹 관련 참고가 될만한 자료가 있으시면 링크 부탁 드려봅니다.

전에 듣기엔 hwpx는 hwp의 바이너리를 단순히 xml로 풀어 쓴 다음 zip으로 묶은것라더군요.
그렇지만 적어도 읽을 수는 있으니...

저건 docx 그대로 따라한 것이라고 합니다.
이미 MS가 doc로 docx를 만들 때 그렇게 했지요.