Skip to content

v0.0.5 — Mail Merge + pandas + silenced()

Choose a tag to compare

@JunDamin JunDamin released this 15 Apr 05:10
· 81 commits to main since this release

🎯 Mail Merge · Pandas · 대화상자 자동응답

pyhwpx 비교 분석 에서 도출한 고가치 기능들을 도입한 릴리즈.

📝 Field API (Mail Merge) — 핵심 신규 기능

HWP 필드(누름틀) 를 통한 템플릿 → 대량 문서 생성.

# 1. 템플릿 준비 ({{name}}, {{date}} 등의 브래킷)
app.open(\"contract_template.hwp\")
app.replace_brackets_with_fields()   # 브래킷 → 실제 HWP 필드

# 2. 값 주입
app.set_field(\"name\", \"홍길동\")
app.set_field(\"date\", \"2026-04-15\")

# 3. 확인
print(app.fields_dict)   # {'name': '홍길동', 'date': '2026-04-15'}

# 4. 저장
app.save(\"out/홍길동.hwp\")

신규 API 14개:

  • create_field / set_field / get_field
  • fields · fields_dict (properties)
  • field_exists / move_to_field / delete_field / delete_all_fields / rename_field
  • replace_brackets_with_fields() — 핵심 헬퍼

🐼 pandas 연동

# DataFrame → HWP 표
df = pd.DataFrame({...})
app.insert_table(data=df)   # columns 자동으로 header

# HWP 표 → DataFrame
df = app.read_table()               # DataFrame
rows = app.read_table(to=\"list\")    # 2D list
csv = app.read_table(to=\"csv\")      # CSV 문자열

🤫 대화상자 자동응답 — app.silenced()

with app.silenced():                     # YES 자동 (기본)
    for path in paths:
        app.open(path)                   # '저장하시겠습니까?' → 자동 YES
        app.replace_all(\"2025\", \"2026\")
        app.save(path)

with app.silenced(mode=0x00200000):     # NO 자동
    app.close()

Context manager 종료 시 원래 모드로 자동 복원.

📖 새 튜토리얼

호환성

  • 100% backward compatible — 모든 기존 코드 수정 없이 동작
  • 1,059 unit tests 통과
  • pandas 는 optional (설치 없어도 다른 기능 정상)

Full changelog: v0.0.4...v0.0.5