Skip to content

HWP5/HWPX 페이지네이션 회귀: HWP3 변환본이 HWP3 원본보다 페이지 수 증가 #554

@jangster77

Description

@jangster77

증상

HWP3 원본 파일은 정확한 페이지 수로 렌더링되지만, 동일 문서를 HWP5/HWPX로 변환한 파일은 페이지 수가 증가하는 회귀가 발생.

파일 파서 페이지 수 비고
samples/hwp3-sample.hwp HWP3 16 정상 (한컴 뷰어 일치)
samples/hwp3-sample-hwp5.hwp HWP5 17 +1 페이지 회귀
samples/hwp3-sample-hwpx.hwpx HWPX 17 +1 페이지 회귀
samples/hwp3-sample5.hwp HWP3 64 정상 (Task #511 정정 적용)
samples/hwp3-sample5-hwp5.hwp HWP5 68 +4 페이지 회귀
samples/hwp3-sample5-hwpx.hwpx HWPX 68 +4 페이지 회귀

본질

HWP3 파서가 정확히 처리한 문서를 한컴 한글에서 HWP5/HWPX로 저장한 결과를 rhwp가 다시 파싱하면 페이지네이션이 어긋남. 이는:

  1. 포맷 변환 시 한컴 자체가 일부 정보 손실 가능성 (LineSeg cs/sw 정보, 그림 wrap zone 등)
  2. rhwp의 HWP5/HWPX 파서 또는 페이지네이션이 한컴 변환 결과를 정확히 재현 못함
  3. 공통 페이지네이션 엔진의 누적 height 계산 결함 (Task #546과 유사 패턴)

Task #546 트러블슈팅 ("결함의 본질이 wrap-around paragraph 들의 누적 height 와 결합 영역") 과 같은 맥락에서, 그림 어울림 (Square wrap) 이 있는 문단의 누적 height 계산 방식이 포맷별로 다르게 작동.

재현 방법

# 본 PR (#553) 또는 upstream/devel HEAD 기준
cargo run --bin rhwp -- export-svg samples/hwp3-sample.hwp -o /tmp/hwp3/
cargo run --bin rhwp -- export-svg samples/hwp3-sample-hwp5.hwp -o /tmp/hwp5/
cargo run --bin rhwp -- export-svg samples/hwp3-sample-hwpx.hwpx -o /tmp/hwpx/

# 페이지 수 비교 (16 vs 17 vs 17)
ls /tmp/hwp3/ | wc -l
ls /tmp/hwp5/ | wc -l
ls /tmp/hwpx/ | wc -l

관련 fixture (PR #553에 추가)

PR #553 머지 후 다음 변환본 fixture 사용 가능:

  • samples/hwp3-sample-hwp5.hwp / samples/hwp3-sample-hwpx.hwpx
  • samples/hwp3-sample4-hwp5.hwp
  • samples/hwp3-sample5-hwp5.hwp / samples/hwp3-sample5-hwpx.hwpx

의심 영역

우선순위

참고

본 issue는 PR #553 (Task #511 HWP3 Square wrap 보완) 작업 중 발견. PR #553이 추가하는 변환본 fixture를 회귀 검증에 사용 가능.

Test plan

  • HWP3 vs HWP5 vs HWPX 변환본 페이지 수 1:1 정합 (한컴 뷰어 기준)
  • 광범위 회귀 검증 (다른 fixture 영향 없음)
  • cargo test --lib 통과 + clippy 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