증상
samples/21_언어_기출_편집가능본.hwp를 rhwp export-svg로 출력한 SVG 1쪽이 PDF 원본과 크게 달라짐. 2쪽부터는 정상.
비교
| 항목 |
PDF (원본) |
SVG (현재) |
| 1쪽 "언어이해" 제목 |
body 표 셀의 큰 제목만 (font≈53pt) |
바탕쪽 글상자(33pt) + body(53pt) 2회 렌더 |
| 1쪽 "홀수형" 박스 |
body 표 우측 1회 |
바탕쪽 좌측 + body 우측 2회 |
| 1쪽 우측 단(column) 본문 |
정상 채워짐 |
비어 있음 (텍스트 누락) |
| 2쪽+ 바탕쪽 헤더 |
`쪽# |
언어이해 |
원인 분석 (초기)
이슈 A: 바탕쪽 1쪽 중복 렌더
- 섹션 0에는 바탕쪽이
[0] Both, [1] Odd 2개 존재하며 각각 "언어이해" 제목, 페이지번호, "홀수형" 글상자를 가짐
- 1쪽 body는 header 영역을 4×5 표로 구성(제목·수험번호 폼·제1교시·홀수형 박스 모두 포함)
- 섹션 플래그
0xC0080004: hide_master_page 비트(0x0400) 없음 → 현재 코드는 바탕쪽을 1쪽에도 그림
- 반면 PDF(한컴 원본)는 1쪽에서 바탕쪽 "언어이해/홀수형"을 숨기고 페이지번호만 표시
- 바탕쪽 글상자 attr 비교:
- Both:
0x146A2000, 0x146A2000, 0x146A2000, 0x146A2300, 0x142A2B00
- Odd:
0x046A2000, 0x042A2000, 0x042A2000, 0x042A2300, 0x042A2300
- 숨김 관련 비트 존재 가능성 → HWP 스펙 조사 필요
이슈 B: 1쪽 우측 단 누락
dump-pages -p 0 결과상 단0(items=12), 단1(items=2) — 페이지네이터는 우단에 배치 완료
- 그러나 SVG 1쪽에는 우측 단 텍스트가 보이지 않음
- 2쪽+는 단 배치가 정상이므로 1쪽 전용 문제로 보임 (상단 표의 wrap=TopAndBottom 영향 가능)
재현
cargo build --release
./target/release/rhwp export-svg samples/21_언어_기출_편집가능본.hwp -o output/svg/21_lang/
# output/svg/21_lang/21_언어_기출_편집가능본_001.svg 확인
작업 범위
- 바탕쪽 글상자 attr 비트 의미 조사 및 "첫쪽 숨김" 렌더 규칙 구현
- 1쪽 우측 단 누락 원인 추적 및 수정
dump 명령에 글상자 attr/position 출력 보강 (디버깅)
- 회귀 방지 테스트 (exam_math 등 기존 샘플 영향 없음 확인)
관련
증상
samples/21_언어_기출_편집가능본.hwp를rhwp export-svg로 출력한 SVG 1쪽이 PDF 원본과 크게 달라짐. 2쪽부터는 정상.비교
원인 분석 (초기)
이슈 A: 바탕쪽 1쪽 중복 렌더
[0] Both,[1] Odd2개 존재하며 각각 "언어이해" 제목, 페이지번호, "홀수형" 글상자를 가짐0xC0080004:hide_master_page비트(0x0400) 없음 → 현재 코드는 바탕쪽을 1쪽에도 그림0x146A2000, 0x146A2000, 0x146A2000, 0x146A2300, 0x142A2B000x046A2000, 0x042A2000, 0x042A2000, 0x042A2300, 0x042A2300이슈 B: 1쪽 우측 단 누락
dump-pages -p 0결과상 단0(items=12), 단1(items=2) — 페이지네이터는 우단에 배치 완료재현
cargo build --release ./target/release/rhwp export-svg samples/21_언어_기출_편집가능본.hwp -o output/svg/21_lang/ # output/svg/21_lang/21_언어_기출_편집가능본_001.svg 확인작업 범위
dump명령에 글상자 attr/position 출력 보강 (디버깅)관련