티스토리 뷰
섹션 스트림 분석하기 빈문서 분석
섹션 스트림은 바디스토리지 내에 존재하는 스트림이다.
기본적으로 레코드 형식이며, 압축이 되기도 한다.
이번 포스팅에서는 빈 도큐먼트를 파싱하는 과정을 담아보려고 한다.
섹션 스트림을 분석하기 위해서는 한글과 컴퓨터에서 제공하는 도큐먼트를 먼저 정독해야한다.
TagID |
SIZE |
LEVEL |
설명 |
HWPTAG_PARA_HEADER |
22 |
0 |
문단 헤더 |
HWPTAG_PARA_TEXT |
가변 |
1 |
text 정보 |
HWPTAG_PARA_CHAR_SHAPE |
가변 |
1 |
글자 모양 |
HWPTAG_PARA_LINE_SEG |
가변 |
1 |
글자 레이아웃 |
HWPTAG_PARA_RANGE_TAG |
가변 |
1 |
영역 태그 |
HWPTAG_CTRL_HEADER |
4 |
1 |
컨트롤 헤더 |
HWPTAG_LIST_HEADER |
6 |
2 |
문단 리스트 헤더 |
HWPTAG_PAGE_DEF |
40 |
2 |
용지 설정 |
HWPTAG_FOOTNOTE_SHAPE |
30 |
2 |
각주/미주 모양 |
HWPTAG_PAGE_BORDER_FILL |
14 |
2 |
쪽 테두리/배경 |
HWPTAG_SHAPE_COMPONENT |
4 |
2 |
개체 |
HWPTAG_TABLE |
가변 |
2 |
표 개체 |
... (기타 그리기 개채) |
가변 |
|
|
HWPTAG_CTRL_DATA |
가변 |
3 |
|
... (기타 레코드) |
|
|
|
(필자는 초반에 나오는 이 표를 보지 못해서 각각의 레코드들을 전부 읽어 레벨을 기록했다. -_-;)
위의 표는 Section Stream에서 본문 정보를 담고있는 레코드들을 추려서 표로 정리해본것이다.
포스팅을 하기 앞서 문단이란 무엇인지 알고 가야한다.
한글문서에서의 문단은 '엔터'로 기준을 나눌 수 있다.
첫번째줄 두번째줄이 엔터로 나뉘어서 작성이 되면 2개의 문단으로 인식한다.
한줄에 엔터없이 2번째줄까지 작성되어 내려가게 되면 그건 1개의 문단이다.
섹션의 첫 문단에는 구역 정의 레코드들이 들어가기 때문에 중간 중간의 문단 레코드들보다 필요한 사이즈가 크다.
첫번째 문단 정보에는 ~ 레코드들이 들어간다.
그다음 문단 부터는 헤더, 텍스트, 글자모양, 글자 위치 정보의 레코드들이 하나의 문단 정보를 이루어 작성된다.
첫번째 문단 |
|
두번재 문단 |
|
3번째 문단 |
|
header + text + shape + line + range_sahpe+ ctrl header + footnote+ border fill + etc |
|
HEADER TEXT CHAR_SHAPE LINE_SEG |
|
HEADER TEXT CHAR_SHAPE LINE_SEG |
|
+ |
+ |
|
|||
|
|
|
|||
|
|
|
위에 표는 스트림에 작성되는 텍스트 헤더들을 표로 정리해본것이다.
첫번재 문단 정보에는 기본적인 텍스트( 테이블도 될수 있음) 정보들이 들어가며 추가적으로 각주/미주 정보라던지, 용지 설정 정보, 각주/미주 모양의 정보와 같은 부수적인 레코드들이 같이 붙는 형태이다.
두번째 문단 부터는 해당 문단에 작성된 텍스트 정보만 작성이 된다. 비교적 첫번째 문단에 비해 담기는 정보가 작다.
'JAVA' 카테고리의 다른 글
[JAVA] JDBC를 이용한 DB 연결하기 (MYSQL) (0) | 2018.08.13 |
---|---|
[JAVA] Hwp 한글 문서 테이블 레코드 분석 (2) | 2018.04.02 |
[JAVA] hwp 한글 문서 내부 구조 알아보기 (5) | 2018.03.11 |
[JAVA] hwp 한글 파일 파싱하기 (준비단계) (0) | 2018.02.22 |
[JAVA] 이진검색(Binary Search) 구현하기 (0) | 2018.01.18 |
- Total
- Today
- Yesterday
- React.js
- 대항해시대 로그인
- 위대한 쇼맨
- JNI INVOKE
- 위대한 쇼맨 후기
- lxd
- JNI
- 대항해시대 넷마블 런처
- 빈파일
- 대항해시대 다클
- 정보처리기사 2018 2회
- 정보처리기사 실기 후기
- Linux
- 정처기 실기
- JNI 시그니처
- 대항해시대 다음 런처
- 대항해시대 런처
- 대항해시대
- 폴더선택다이얼로그
- 다클 코드
- JNI SIGNITURE
- OSI 7Layer
- 합격 후기
- HTTPie
- 다클 빈
- 위대한 쇼맨 ost
- vite.js
- EACCES: permission denied
- 구글 클라우드 플랫폼
- 데스큐어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |