Skip to content

HWP5 변환본 페이지 강제 나눔 정밀화 — 한컴 page-fill 휴리스틱 정합 #1007

@jangster77

Description

@jangster77

개요

samples/hwp3-sample16-hwp5.hwp (HWP3 → HWP5 변환본) 의 페이지 분할이 한컴 viewer 와 다름. 한컴은 section 1 (Ⅰ. 사업개요) 만 page 1 에 표시 후 section 2 ("(2) 주전산센터 서버통합...") 를 새 페이지로 분리. rhwp 는 section 2 시작도 page 1 에 packed.

재현

rhwp dump-pages samples/hwp3-sample16-hwp5.hwp -p 2

rhwp-studio 에서 사업개요 페이지 확인.

진단

HWP5 binary 안에 명시적 page break 정보 부재 확인:

  • paragraph.raw_break_type=0x00 (no 쪽나누기 flag)
  • ParaShape.page_break_before=false (attr1 bit 19 미설정)

그러나 한컴은 section 2 를 새 페이지로 분리. 즉 한컴의 layout 알고리즘이 page-fill heuristic 으로 자동 분할 결정.

rhwp 는 paragraph 누적 시 한컴보다 compact 하여 더 많은 content 가 page 에 fit.

격차 위치

Fix 후보

  1. ParaShape 누적 spacing 추가 buffer — 한컴 정합 정확 공식 미상 (휴리스틱)
  2. page-fill 휴리스틱 reverse-engineering — 한컴의 paragraph 간격 가산 방식 정밀 분석
  3. Empty paragraph 자동 page break 감지 — pi=87 같은 empty paragraph 다음에 section 시작 시 page break

회귀 risk

  • 모든 HWP5 변환본 + 일반 HWP5 페이지 분할에 영향
  • Sweep 검증 필수 (sample10/12/14/16/18/19, exam_*, aift, biz_plan 등)

관련

Task #1001 (closes #1001) 의 잔존 격차 — PR #1005 본문 참조.

milestone: v1.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions