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()Insert a picture
Drop an image into the active document via the 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()See also
- Guide: low-level escape hatch
- Recipe: fill-fields β νλ μμΉλ‘ μ΄λνκΈ°
- Reference: App.api β raw COM νΈλ€