외부 실문서 3개에서 hwpx.experimental.estimate_pages()가 복잡한 표 배치를 계산하지 못하고 pages=None을 반환합니다. SDK의 쪽 배치 지원 확대를 위한 재현 사례로 등록합니다. 현재 명시된 미지원 동작이며, 표 읽기·셀 편집·저장 실패로 분류하지 않습니다.
검사 대상
- GitHub main:
97670eb2462e106134633acd78a8097d96db0fdd (2026-09-30 검사).
- Python 3.13.13 / macOS / 독립 clone 및 가상환경.
- 당시 최신 공개 release는 v6.6.0이나, 검사한 main에는 이후 미발행 변경이 포함됩니다. PyPI wheel에서 재현했다고 주장하지 않습니다.
재현
해당 커밋의 repository root에서 실행합니다. 입력은 이미 저장소에 포함되어 있어 별도 다운로드가 필요 없습니다.
uv run --extra test python - <<'PY'
from hwpx.experimental import estimate_pages
paths = (
"tests/fixtures/m2_corpus/form_002.hwpx",
"tests/fixtures/m105_evalplan/blank_form_3hak.hwpx",
"tests/fixtures/hwpxlib_corpus/error__20230818__test.hwpx",
)
for path in paths:
result = estimate_pages(path)
print(path, "pages=", result.pages, "unsupported=", result.unsupported)
PY
실측 결과(3건 모두 pages=None):
| 입력 |
unsupported |
미지원 배치 |
m2_corpus/form_002.hwpx |
section 0: a page break in a flowing table row holding a table |
중첩 표를 품은, 본문과 함께 흐르는 표 행의 페이지 분할 |
m105_evalplan/blank_form_3hak.hwpx |
section 0: a page break or another object beside a top-and-bottom table's band |
위아래 배치 표 영역 주변의 페이지 분할 또는 다른 개체 |
hwpxlib_corpus/error__20230818__test.hwpx |
section 0: a nested table |
해당 문서의 중첩 표 |
입력 SHA-256
form_002.hwpx 5ab8f7c368e02538f75f1cd2bd82bbd8de2f925a54ba7b38ec9395b2cdb804d4
blank_form_3hak.hwpx 2288ef6e1501f3a88aabcfe6c4ac8af0001af68e909afba810d0be5e042580cc
error__20230818__test.hwpx a18a83005f1956366d48493d34cfeb93775ab9fd37084a37f84af6c712eb7997
외부 입력 출처는 tests/fixtures/m2_corpus/NOTICE.md 및 tests/fixtures/hwpxlib_corpus/manifest.json에서 확인할 수 있습니다.
처리 요청과 완료 기준
- 각 입력에서 거부되는 정확한 표·행·문단 배치를 확인하고, 지원 가능한 단위로 나누어 처리해 주세요.
- 해당 배치를 지원한 뒤에는 원본과 대표 셀 편집본의 페이지 수·줄 위치를 실제 한컴으로 관찰하고 회귀검사를 추가해 주세요. 원본의 줄 캐시에만 의존하는 지원인지, 편집으로 캐시가 무효화되어도 지원되는지 구분해 주세요.
- 지원하기 어려운 배치는
pages=None과 구체적인 이유를 유지하고, 지원 범위·남은 제한을 문서에 남겨 주세요. 미지원 이유를 없애는 것만으로 완료하지 않습니다.
기존 관련 회귀 자산은 tests/test_layout_page_estimate.py입니다. 한컴 저장본과 캐시 제거본을 비교하는 테스트 및 한 페이지보다 큰 병합 행·중첩 표 행 분할의 미지원 테스트가 있습니다.
함께 확인한 검증 범위
- 표·FormFit·쪽 배치·셀 병합/분할·여백/테두리 관련 기존 테스트: 543 passed / 2 skipped. 건너뛴 항목은 실한컴 opt-in smoke와 confident font shrink 대상 부재입니다.
- 외부 fixture 중 표가 있는 17문서: 표 387개, 병합 셀 1,213개, 중첩 표 25개.
- 17문서 모두 무편집 저장 및 문서당 셀 하나에 같은 값 다시 쓰기에서 ZIP member payload가 동일했습니다.
- 문서당 셀 하나의 새 값 쓰기·저장·재열기는 17/17 구조 검사 통과: 표/병합 셀/중첩 표 개수 유지, 새 값 1회 존재, 재열기 확인. 변경 member는 해당 section XML뿐입니다.
- 17개 중 14개는 쪽 수를 반환했고 위 3개는 미지원입니다. 14개의 반환값을 실한컴 정답으로 채점한 것은 아닙니다.
이번 새 편집 출력은 실한컴으로 새로 렌더하지 않았습니다. 따라서 글자 가림·잘림 및 모든 복잡한 표의 시각적 정확성을 검증한 결과가 아닙니다. 셀 쓰기의 split_paragraphs=True가 내부 표를 포함한 기존 문단을 재작성하는 동작은 문서화된 계약이므로 이 이슈의 결함으로 포함하지 않습니다.
외부 실문서 3개에서
hwpx.experimental.estimate_pages()가 복잡한 표 배치를 계산하지 못하고pages=None을 반환합니다. SDK의 쪽 배치 지원 확대를 위한 재현 사례로 등록합니다. 현재 명시된 미지원 동작이며, 표 읽기·셀 편집·저장 실패로 분류하지 않습니다.검사 대상
97670eb2462e106134633acd78a8097d96db0fdd(2026-09-30 검사).재현
해당 커밋의 repository root에서 실행합니다. 입력은 이미 저장소에 포함되어 있어 별도 다운로드가 필요 없습니다.
실측 결과(3건 모두
pages=None):unsupportedm2_corpus/form_002.hwpxsection 0: a page break in a flowing table row holding a tablem105_evalplan/blank_form_3hak.hwpxsection 0: a page break or another object beside a top-and-bottom table's bandhwpxlib_corpus/error__20230818__test.hwpxsection 0: a nested table입력 SHA-256
외부 입력 출처는
tests/fixtures/m2_corpus/NOTICE.md및tests/fixtures/hwpxlib_corpus/manifest.json에서 확인할 수 있습니다.처리 요청과 완료 기준
pages=None과 구체적인 이유를 유지하고, 지원 범위·남은 제한을 문서에 남겨 주세요. 미지원 이유를 없애는 것만으로 완료하지 않습니다.기존 관련 회귀 자산은
tests/test_layout_page_estimate.py입니다. 한컴 저장본과 캐시 제거본을 비교하는 테스트 및 한 페이지보다 큰 병합 행·중첩 표 행 분할의 미지원 테스트가 있습니다.함께 확인한 검증 범위
이번 새 편집 출력은 실한컴으로 새로 렌더하지 않았습니다. 따라서 글자 가림·잘림 및 모든 복잡한 표의 시각적 정확성을 검증한 결과가 아닙니다. 셀 쓰기의
split_paragraphs=True가 내부 표를 포함한 기존 문단을 재작성하는 동작은 문서화된 계약이므로 이 이슈의 결함으로 포함하지 않습니다.