from hwpapi import App
from hwpapi.context import charshape_scope
from hwpapi import units as U
def main():
with App(is_visible=True) as app:
app.new()
# 1. 텍스트 삽입
app.doc.insert_text("hwpapi 테스트 문서\n\n")
app.doc.insert_text("이 문서는 hwpapi로 자동 생성되었습니다.\n")
# 2. 서식 지정: 맨 위로 이동, 첫 줄 선택, 제목 스타일 적용
app.doc.cursor.goto_page(1)
app.doc.select_text(0, len("hwpapi 테스트 문서"))
with charshape_scope(app, bold=True, size=U.pt(18)):
app.doc.insert_text("hwpapi 테스트 문서")
# 3. 이동 후 추가 삽입
app.doc.cursor.goto_end()
app.doc.insert_text("\n")
for i in range(3):
app.doc.insert_text(f"• 항목 {i + 1}\n")
# 4. 찾기 / 바꾸기
count = app.doc.replace_all("항목", "list item")
print(f"Replaced {count} occurrences")
# 5. 액션 인트로스펙션 (목록 조회 외에는 COM 호출 없음)
actions = app.actions
print(f"\nAvailable actions: {len(actions.list_actions())}")
# 6. Raw COM 접근 (escape hatch)
print(f"\nRaw HWP COM: {app.api.CLSID}")
# 7. 저장
app.save_as("quickstart-output.hwp")
if __name__ == "__main__":
main()퀵스타트 투어
모든 hwpapi 스크립트가 사용하는 7가지 동작

tests/generate_v2_doc_artifacts.py 가 실제 HWP 를 구동해 생성가장 짧고 유용한 스크립트 — 열기/새로 만들기, 텍스트 삽입, 서식 지정, 찾기, 저장 — 을 실행해봅니다. examples/quickstart.py 를 v2 표면에 맞게 이식한 것입니다.
v1 에서 무엇이 바뀌었는가
| v1 | v2 |
|---|---|
app.insert_text(...) |
app.doc.insert_text(...) |
app.move.top_of_file() |
app.doc.cursor.goto_page(1) |
app.select_text() |
app.doc.select_text(...) |
app.set_charshape(bold=True, height=1800) |
charshape_scope(app, bold=True, size=U.pt(18)) |
app.replace_all(...) |
app.doc.replace_all(...) |
app.api.CLSID |
app.api.CLSID (변경 없음 — api 는 여전히 App 에 있음) |