HWPTAG_STYLE(문단 스타일) 가변 스트림으로 12 + (2 * len1) + (2 * len2) 라고 되어있지만 실제로는 14 + (2 * len1) + (2 * len2)이다. 2바이트가 누락 되어 있으며, 해당 누락 부분은 hwpx 문서를 찾아 본 결과 양식모드에서 스타일을 보호할지 아닐지 결정하는 여부가 들어가있다 자료형은 UINT16 사이즈. HWP 문서를 보다보면 이런식으로 누락되어있거나, 설명이 부족하거나, 표 10이라 써져있으면서 15에 있거나. 아예 안써져있거나 하는 부분이 꽤 많이 보인다. 한컴에서 제대로 수정해주지 않는 이상 명확하고 정확하게 알 방법은 없겠지만, 지금처럼 간접적으로 알게 된다면 앞으로 이런 삽질을 반복해야할 개발자들에게 도움이 되고자 써놓는다.
https://github.com/ohah/hwpjs 아직 미구현된 부분이 많지만, 우선 어느정도 보여주는데에는 성공했기에 공개해놓는다. Demo 페이지는 아래의 링크에서 확인할 수 있다 데모 문제점 작업을 하면서 느낀점은 너무 많다! 미씽노가! 미씽노란? 포켓몬스터 초창기 버전에서 버그로 나오는 알 수 없는 포켓몬을 말하는 명칭이다. 알고 보면 내가 잘못 이해하고 설명이 안되어있다고 착각한 부분도 꽤나 많지만, 아무리 애를 쓰고 기를 써도 알 수 없는 코드 영역, 어디에 적용되는지 명확히 알 수 없는 데이터들이 많다 데이터를 명확하게 가져온다 치더라도, 현재 hwpjs를 간단한 html문서로 구현하려 하고 있기에 사실 css에서 지원되기 힘든 특정한 표 테두리 선이나, 글머리 들여쓰기, 자간 줄간 장평..
HWP 5.0 HWP포맷은 3.X 버전부터 공개되어있지만 사실상 3.X 문서는 현재 거의 쓰이지 않고 있기에 해당 포맷은 분석하지 않는다. 우선 HWP포맷은 복합 파일 이진 형식(Compound File Binary Format) 이하 CFB라 불리는 파일의 포맷을 사용한다. 한컴문서 해당 포맷을 열어보는 프로그램은 이미 인터넷 검색만 해도 손 쉽게 나와있으며, 자바스크립트, 자바, 파이썬 등의 언어에서도 찾아볼 수 있다. 한컴에서 공개한 공식 문서에서 가장 핵심은 바로 이 내용이다. 분석 위의 이미지에서도 확인할 수 있듯 zlib의 압축까지 풀어내야만 정확히 hwp포맷의 자료를 읽을 수 있다. CFB, zlib 둘 다 공개되어있는 오픈소스이다보니 왠만한 메이저 프로그래밍 언어라면 손 쉽게 관련 플러그인..
개발에 앞서 우선 이 글을 보는 사람은 궁금하지 않겠지만 쓰는 사람은 쓰고 싶은 내용이라 쓴다. 스킵해도 된다. 개발을 하는 이유는 없다. 문득 하고 싶어서 하게 됐으며, 할 수 있을것 같기도 해서였다. hwp 포맷은 국내에서 자주 쓰이는 포맷이지만, 나같은 일부 개발자들에게는 잘 쓰지도 않고 욕을 하는 포맷 중 하나인데, 가장 큰 이유는 고립 된 포맷이라는 점이다. 개발자들의 경우 고립 된 파일, 고립된 플러그인, 고립된 라이브러리 등은 사용하기 어렵다. 프로그램 자체의 이슈나 개발 도중 관련 이슈에 대해 해결하기 어렵고, 신뢰성도 그만큼 보증이 되지 못하기 때문이다. hwp를 사용하는 문서편집기인 한글은 한글을 지원하는 편집기 중 잘 만든 편집기이긴 하나, 그 포맷이 오랫동안 공개되어있지 않았었고, ..
- Total
- Today
- Yesterday
- #업데이트가 이상하게 될떄
- contributor
- #노력만 가상한 글
- JavaScript
- 배포
- 웹어셈블리
- 노력만 가상한 글
- 무관의 왕
- contributer
- 마크다운
- #useState 특징
- 그래프
- KBL
- webassembly
- youtube
- API
- craco
- 팀별 분석
- HWP
- iframe
- vtie
- 티스토리API
- Rust
- #팀별 분석
- #그래프
- vscode
- ffmpeg
- WASM
- 7위를 하는 이유
- #useState
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |