Skip to content

Task #1201: HWPX masterpage idRef 연결 보강#1242

Merged
edwardkim merged 1 commit into
edwardkim:develfrom
postmelee:task-1201-hwpx-masterpage
Jun 2, 2026
Merged

Task #1201: HWPX masterpage idRef 연결 보강#1242
edwardkim merged 1 commit into
edwardkim:develfrom
postmelee:task-1201-hwpx-masterpage

Conversation

@postmelee

Copy link
Copy Markdown
Collaborator

변경 내용

  • HWPX content.hpf에서 masterpage manifest 항목의 idhref를 함께 보존합니다.
  • section XML의 <hp:masterPage idRef="...">를 수집하고, idRef -> manifest id -> href -> masterpage XML 순서로 SectionDef.master_pages에 연결합니다.
  • 같은 section 안에서 동일 masterpage href가 중복 연결되지 않도록 처리했습니다.
  • HWPX masterPage@type 표기를 정규화해 EVEN/ODD뿐 아니라 Even/Odd, LastPage, OptionalPage 계열도 안정적으로 해석합니다.
  • 기존 manifest 순서 기반 section_master_page_files 경로는 idRef 연결이 실패한 경우의 fallback으로 유지했습니다.

원인

기존 HWPX 파서는 section XML의 masterPage@idRef를 직접 따라가지 않고 manifest 순서 기반으로 masterpage 파일을 추정했습니다.

이 방식은 샘플에 따라 우연히 맞을 수는 있지만, manifest 순서가 section 참조 순서와 달라지면 section별 바탕쪽이 잘못 연결되거나 홀짝 바탕쪽이 반대로 보일 수 있습니다. HWPX에서는 HWP5 raw parser의 순서 기반 규칙이 아니라 XML에 명시된 idReftype을 우선해야 합니다.

범위와 주의

  • 이 PR은 HWPX masterpage의 파싱 및 section 연결 정합성을 보강합니다.
  • HWP5 raw parser의 기존 바탕쪽 LIST_HEADER 순서 해석은 변경하지 않았습니다.
  • 대상 샘플에서 PDF 기준 4쪽 바탕쪽이 rhwp 출력에서는 5쪽부터 보이는 현상은 section0 pagination/layout 차이로 남아 있습니다. 즉 이 PR은 해당 페이지 밀림 자체를 해결하지 않습니다.
  • 원본 재현 HWPX/PDF 파일은 커밋에 포함하지 않았고, PR 첨부로 별도 제공할 예정입니다.

관련 이슈

Closes #1201

테스트

  • cargo fmt --all --check
  • cargo test
  • cargo clippy -- -D warnings
  • cargo test --lib hwpx
  • cargo test --test issue_1100_exam_social_hwpx_header
  • cargo test --test issue_1113_header_autonum_placeholder
  • 대상 HWPX 샘플 dump로 section별 Even/Odd 바탕쪽 연결 확인
  • 대상 HWPX 샘플 export-svg 및 PDF 4~7쪽 참고 비교

스크린샷

이번 PR은 parser/IR 연결 보강이 주 범위라 변경 전후 스크린샷 차이는 제한적입니다.
대상 샘플의 시각적 pagination 차이는 별도 layout 이슈에서 다루는 것이 적절합니다.

@postmelee postmelee changed the title task 1201: HWPX masterpage idRef 연결 보강 Task #1201: HWPX masterpage idRef 연결 보강 Jun 2, 2026
@postmelee postmelee force-pushed the task-1201-hwpx-masterpage branch from 1ea1429 to 658a030 Compare June 2, 2026 06:35
@edwardkim edwardkim self-requested a review June 2, 2026 07:53
@edwardkim edwardkim added the enhancement New feature or request label Jun 2, 2026
@edwardkim edwardkim added this to the v1.0.0 milestone Jun 2, 2026
@postmelee postmelee marked this pull request as ready for review June 2, 2026 08:04
@edwardkim edwardkim merged commit 7c2b7cb into edwardkim:devel Jun 2, 2026
6 checks passed
@edwardkim

Copy link
Copy Markdown
Owner

메인테이너 확인 완료했습니다.

  • local/pr1242-verify에서 PR #1242를 병합해 검증했습니다.
  • cargo fmt --all --check 통과
  • cargo test --lib hwpx 통과
  • issue_1100_exam_social_hwpx_header, issue_1113_header_autonum_placeholder, hwpx_roundtrip_integration 통과
  • WASM 빌드 및 rhwp-studio 빌드 통과
  • 메인테이너 시각 판정: samples/exam_kor.hwp 통과

원본 [2027] 온새미로 1 본교재.hwpx/pdf 샘플은 로컬에서 확보하지 못해 직접 PDF 비교는 수행하지 못했지만, 구현 구조와 자동/회귀 가드 검증 기준으로 수용했습니다.

devel 반영 완료: f7cd9556

기여 감사합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants