Export to PDF, HTML, image, text

Save the active document in any format HWP supports

app.save(path) ν•œ 쀄이면 ν™•μž₯μžμ— 따라 μ μ ˆν•œ 포맷으둜 μ €μž₯λ©λ‹ˆλ‹€. λͺ…μ‹œμ μœΌλ‘œ format= 을 쀄 μˆ˜λ„ 있고, hwpapi.io.export_* 의 ν˜•μ‹λ³„ 헬퍼λ₯Ό μ“Έ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 λ ˆμ‹œν”ΌλŠ” μ„Έ 갈래의 차이와 μ‚¬μš© μ‹œμ μ„ μ •λ¦¬ν•©λ‹ˆλ‹€.

1. ν™•μž₯μžκ°€ μ•Œμ•„μ„œ 포맷을 μ •ν•˜λŠ” 경우

hwpapi.App.save() 의 λ§€ν•‘(_SAVE_FORMAT_MAP)에 λ“±λ‘λœ ν™•μž₯자라면 format= 인자 없이 κ·ΈλŒ€λ‘œ λ©λ‹ˆλ‹€.

ν™•μž₯자 HWP 포맷 λ¬Έμžμ—΄
.hwp HWP
.pdf PDF
.hwpx HWPX
.hml HWPML2X
.png PNG
.txt TEXT
.docx MSWORD
.html HTML+
.htm HTML
from hwpapi import App

with App() as app:
    app.open("report.hwp")

    app.save("out/report.pdf")     # β†’ PDF
    app.save("out/report.html")    # β†’ HTML+ (ν•œκΈ€2007 μ‹ ν˜• HTML)
    app.save("out/report.htm")     # β†’ HTML  (κ΅¬ν˜• HTML)
    app.save("out/report.png")     # β†’ PNG
    app.save("out/report.txt")     # β†’ 평문 ν…μŠ€νŠΈ
    app.save("out/report.docx")    # β†’ Microsoft Word
Note

HTML 두 μ’…λ₯˜ β€” .html 은 ν•œκΈ€2007 μ΄ν›„μ˜ ν–₯μƒλœ HTML 좜λ ₯ (HTML+), .htm 은 κ΅¬ν˜• HTML μž…λ‹ˆλ‹€. ν˜Έν™˜μ„±μ΄ μ€‘μš”ν•œ κ³³(λ ˆκ±°μ‹œ λΈŒλΌμš°μ €, μ™ΈλΆ€ λ³€ν™˜ νŒŒμ΄ν”„λΌμΈ) μ—μ„œλ§Œ .htm 을 μ“°μ„Έμš”.

2. ν™•μž₯자λ₯Ό λͺ» μž‘κ±°λ‚˜ κ°•μ œν•˜κ³  싢을 λ•Œ

ν™•μž₯자 맀핑에 μ—†λŠ” 포맷, λ˜λŠ” .hwp 인데 λ‹€λ₯Έ 포맷으둜 μ €μž₯ν•˜κ³  싢을 λ•ŒλŠ” format= 으둜 직접 μ§€μ •ν•©λ‹ˆλ‹€.

# ν™•μž₯μžκ°€ .data 같은 λΉ„ν‘œμ€€μ΄μ§€λ§Œ PDF 둜 μ €μž₯ν•˜κ³  싢을 λ•Œ
app.save("snapshot.data", format="PDF")

# ν™•μž₯μžλŠ” .html 인데 κ΅¬ν˜• HTML 둜 κ°•μ œ
app.save("legacy.html", format="HTML")

3. hwpapi.io.export_* 헬퍼 β€” FileIOError μžλ™ λ³€ν™˜

hwpapi.io 의 ν˜•μ‹λ³„ ν—¬νΌλŠ” λ‚΄λΆ€μ μœΌλ‘œ app.save_as() λ₯Ό ν˜ΈμΆœν•˜λ©΄μ„œ pywintypes.com_error λ₯Ό FileIOError 둜 κ°μŒ‰λ‹ˆλ‹€. ν˜ΈμΆœμžκ°€ 항상 νŒ¨ν‚€μ§€ 고유 μ˜ˆμ™Έλ§Œ 작으면 λ˜λ„λ‘ λ§Œλ“€μ–΄μ£ΌλŠ” 얇은 λž˜νΌμž…λ‹ˆλ‹€.

from hwpapi import App
from hwpapi.io import export_pdf, export_image, export_text
from hwpapi.errors import FileIOError

with App() as app:
    app.open("report.hwp")

    try:
        export_pdf(app, "out/report.pdf")
        export_image(app, "out/report.png")
        export_text(app, "out/report.txt")
    except FileIOError as exc:
        print(f"export failed: {exc}")
헬퍼 포맷
export_pdf(app, path) PDF
export_image(app, path) ν™•μž₯자 sniff β€” .png β†’ PNG, κ·Έ μ™Έ β†’ BMP
export_text(app, path) TEXT (평문)
Tip

HTML μ „μš© ν—¬νΌλŠ” 아직 μ—†μ§€λ§Œ, νŒ¨ν„΄μ€ λ™μΌν•©λ‹ˆλ‹€ β€” export_pdf λ₯Ό λ³Έλ–  10쀄 μ •λ„λ‘œ μ‰½κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€ (hwpapi/io/export.py μ°Έκ³ ).

4. app.save() vs app.save_as()

λ©”μ„œλ“œ μ‚¬μš© μ‹œμ 
app.save() (인자 μ—†μŒ) ν˜„μž¬ 파일 μœ„μΉ˜μ— in-place μ €μž₯ (HwpObject.Save)
app.save(path) HwpObject.SaveAs 둜 μ €μž₯ β€” ν™œμ„± λ¬Έμ„œλ₯Ό ν†΅μ§Έλ‘œ μ €μž₯
app.save_as(path) v1 의 save_block 에 ν•΄λ‹Ή β€” 선택 μ˜μ—­(블둝)만 μ €μž₯. 일반 μ‚¬μš©μ—μ„œλŠ” save() λ©΄ μΆ©λΆ„

5. 폴더 일괄 λ³€ν™˜

from pathlib import Path
from hwpapi import App

src = Path("input")           # *.hwp 듀이 μžˆλŠ” 폴더
dst = Path("output_pdf")
dst.mkdir(exist_ok=True)

with App() as app:
    for hwp in src.glob("*.hwp"):
        app.open(str(hwp.absolute()))
        app.save(str(dst / hwp.with_suffix(".pdf").name))
        app.close()
        print(f"converted {hwp.name}")

See also

Back to top