from pathlib import Path
from hwpapi import App
with App() as app:
app.open("report.hwp")
fpath = Path("logo.png").absolute().as_posix()
app.api.InsertPicture(
Path=fpath,
Embedded=True, # 이미지 임베드 (외부 링크 X)
sizeoption=2, # 0=원본 크기, 2=글자크기 비율, 3=수동
Reverse=False,
watermark=False,
effect=0, # 0=원본, 1=흑백, 2=회색조
)
app.save()그림 삽입
v2 escape hatch 를 통해 활성 문서에 이미지 넣기
v1 의 app.insert_picture(...) 헬퍼는 v2 슬림 퍼사드에서 의도적으로 제거되었습니다 (App public 멤버 82 → 12). 그림 삽입은 두 가지 길로 계속 가능합니다 — 호출 환경에 맞춰 선택하세요.
노트
Issue #3 — TypeError: ... unexpected keyword argument 'reverse': v1 헬퍼가 HWP COM 인터페이스의 매개변수 이름과 다른 키워드를 넘겨 발생했던 문제입니다. v2 에서는 헬퍼를 거치지 않고 COM 메서드 또는 actions.InsertPicture 액션을 직접 사용하므로 이 문제는 재발하지 않습니다.
1. 가장 간단 — app.api.InsertPicture(...) 직접 호출
app.api 는 raw HwpObject COM 핸들이라, HWP COM 메서드를 그대로 부를 수 있습니다.
경고
파라미터 이름 대소문자 주의 — HWP COM 메서드는 IDL 시그니처 대로 케이스를 맞춰야 합니다 (Path, Embedded, Reverse). 잘못 쓰면 TypeError: ... got an unexpected keyword argument 가 납니다. 정확한 시그니처는 한컴 SDK 문서 또는 dir(app.api) 로 확인하세요.
2. v2 액션 escape hatch — app.actions.InsertPicture
hwpapi.low.actions 의 액션 형태로도 호출 가능합니다. pset 으로 파라미터를 넘기는 패턴이라 다른 액션과 일관됩니다.
from hwpapi import App
with App() as app:
app.open("report.hwp")
action = app.actions.InsertPicture
pset = action.pset
pset.Path = "logo.png" # HWP 가 절대경로로 변환
pset.Embedded = True
action.run(pset)
app.save()3. 정확한 위치에 삽입하기
먼저 필드/북마크/표 셀로 커서를 이동시킨 다음 호출합니다.
from hwpapi import App
with App() as app:
app.open("template.hwp")
# 누름틀로 이동
app.doc.fields["logo_slot"].goto()
app.api.InsertPicture(Path="logo.png", Embedded=True, sizeoption=2)
# 또는 책갈피로 이동
app.doc.bookmarks.goto("appendix-figure-1")
app.api.InsertPicture(Path="diagram.png", Embedded=True, sizeoption=0)
app.save_as("out/report.hwp")4. 폴더의 모든 이미지 일괄 삽입
from pathlib import Path
from hwpapi import App
with App() as app:
app.open("report.hwp")
for img in sorted(Path("figures").glob("*.png")):
app.api.InsertPicture(
Path=str(img.absolute()),
Embedded=True,
sizeoption=0,
)
app.api.Run("BreakPara") # 다음 줄로 이동
print(f"inserted {img.name}")
app.save()함께 보기
- Guide: low-level escape hatch
- Recipe: fill-fields — 필드 위치로 이동하기
- Reference: App.api — raw COM 핸들