ํ์ปด์คํผ์ค ์์ด ํ/๊ธ ๋ฌธ์(HWPXยทHWP)๋ฅผ ์ฝ๊ณ ๊ณ ์น๊ณ ๋ง๋๋ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ํ๊ตญ์ด | English
HWPX๋ ZIP ์์ XML(OWPML)์ ๋ด์ ํ์์ด๋ผ, ํ์ปด์คํผ์ค๊ฐ ์์ด๋ ํ์ด์ฌ๋ง์ผ๋ก ๋ค๋ฃฐ ์ ์์ต๋๋ค.
python-hwpx๋ WindowsยทmacOSยทLinuxยทCI ์ด๋์๋ ๋๊ณ ์์กด์ฑ์ lxml ํ๋์
๋๋ค. HWP 5.0(.hwp)๋ ๊ฐ์
API๋ก ์ด๊ณ ์ ์ฅํฉ๋๋ค.
๋ง๋ ๋ฌธ์๋ ํ์ปด์คํผ์ค 2024์์ ์ง์ ์ด์ด ๋ณด๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ์ง์ ํจ๊ป ์๋์ ์ ์ด ๋ก๋๋ค.
pip install python-hwpx # Python 3.10+from hwpx import HwpxDocument
doc = HwpxDocument.new()
doc.add_heading("2026 ์ด์๊ณํ", level=1)
doc.add_paragraph("์ถ์ง ๋ฐฐ๊ฒฝ", style="๊ฐ์ 2") # ํ/๊ธ์ด "๊ฐ." ๋ฒํธ๋ฅผ ๋ถ์ธ๋ค
doc.save_to_path("๊ณํ.hwpx")์คํ์ผ์ ์ด๋ฆ์ผ๋ก ๊ณ ๋ฆ
๋๋ค. ์๋ ์ด๋ฆ์ ์ฐ๋ฉด ๊ทธ ์ค์์ ๋ฐ๋ก ์ค๋ฅ๊ฐ ๋ฉ๋๋ค.
์๋ ๋ฌธ์๋ฅผ ๊ณ ์น ๋๋ HwpxDocument.open("๋ณด๊ณ ์.hwpx")๋ก ์์ํฉ๋๋ค. .hwp๋ ๋๊ฐ์ด ์ด๊ณ ,
save_to_path("๋ณด๊ณ ์.hwp")๋ก HWP 5.0์ผ๋ก ์ ์ฅํ ์ ์์ต๋๋ค.
๋ฌธ์ ์ ์ยท์์ ์ฑ์ยท์ํ์ง ์กฐํ ๊ฐ์ ์์ ์ํฌํ๋ก๊ฐ ํ์ํ๋ฉด
python-hwpx-automation์ ํจ๊ป ์ค์นํ์ธ์.
์์ ์ค์น ๋ช ๋ น์ ์ํด
pip install "python-hwpx[visual]"๋ ๊ณ์ ๋ฉ๋๋ค. ๋ค๋ง ์ด extra๋ ๋น์ด ์์ด ๋ ๋ยทPDF ์์กด์ฑ์ ์ค์นํ์ง ์์ต๋๋ค. ๊ทธ ์ผ์python-hwpx-automation[oracle]์ด ๋งก์ต๋๋ค.
- ์ฝ๊ธฐยท์ถ์ถ: ํ ์คํธยทHTMLยทMarkdown์ผ๋ก ๋ด๋ณด๋ ๋๋ค. ์์, ํ ์์ ํ, ๊ฐ์ฃผ๋ฅผ ์ด๋ฆฝ๋๋ค.
- ํธ์ง: ๋ฌธ๋จยทํยท๊ทธ๋ฆผยท๋จธ๋ฆฌ๋ง/๊ผฌ๋ฆฌ๋งยท๋ฉ๋ชจยท๊ฐ์ฃผ, ์ค ๊ฐ๊ฒฉยท์ฌ๋ฐฑยท์ชฝ ๋ฒํธ ๊ฐ์ ์์์ ๊ณ ์นฉ๋๋ค.
- ์์ ์ฑ์ฐ๊ธฐ: ๋ผ๋ฒจ๋ก ์นธ์ ์ฐพ์ ๊ฐ๋ง ๋ฃ๊ณ ์๋์ง ์์ ๋ถ๋ถ์ ๋ฐ์ดํธ ๊ทธ๋๋ก ๋ก๋๋ค. FormFit์ ๊ฐ์ด ์นธ์ ๋ค์ด๊ฐ๋๋ก ์ค์ ๋ฐ๊พธ๊ฑฐ๋ ๊ธ์๋ฅผ ์ค์ผ์ง ํ/๊ธ์ ๊ธ์ ํญ์ผ๋ก ์ฌ์ ๊ณ ๋ฆ ๋๋ค.
- ํ ๊ตฌ์กฐ ํธ์ง: ํยท์ด ๋ฃ๊ธฐ์ ์ง์ฐ๊ธฐ, ์นธ ๋๋๊ธฐ์ ํฉ์น๊ธฐ.
doc.tables[0]์ฒ๋ผ ๋ฒํธ๋ก ํ๋ฅผ ๊บผ๋ ๋๋ค. - ๋ง๋ค๊ธฐยท์ผ๊ด ์ฒ๋ฆฌ: ์ ๋ฌธ์, ๋ชฉ์ฐจยท์ํธ ์ฐธ์กฐ, ๋ฉ์ผ ๋จธ์ง, ๋ฌธ์ ๋น๊ต, ๋ณ๊ฒฝ ์ถ์ .
- HWP 5.0:
.hwp๋ฅผ HWPX๋ก ์ฝ์ด ๊ฐ์ API๋ก ๊ณ ์น๊ณ.hwp๋ก ์ ์ฅํฉ๋๋ค. ์ฎ๊ธฐ์ง ๋ชปํ ๋ด์ฉ์document.conversion_report์ ๋จ์ต๋๋ค. - ๋ฐฐ์น ์ถ์ (์คํ):
estimate_pages๋ ํ/๊ธ ์์ด ์ชฝ ์์ ์ค๋ง๋ค์ ์ชฝยท์ธ๋ก ์์น๋ฅผ ์ถ์ ํฉ๋๋ค.write_line_caches๋ ํ/๊ธ์ด ์ ์ฅํ ๋ ์ฐ๋ ์ค ๋ฐฐ์น ์ ๋ณด๋ฅผ, ํ/๊ธ๊ณผ ๊ฐ์ ๊ฐ์ ํ์คํ ์๋ ๋ฌธ๋จ์๋ง ์๋๋ค. rhwp์ฒ๋ผ ์ด ์ ๋ณด๋ก ๊ทธ๋ฆผ ์๋ฆฌ๋ฅผ ์ฐพ๋ ๋ทฐ์ด์์๋ ๊ทธ๋ฆผ์ด ๋ณด์ด๊ฒ ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ผ๋ก๋ ์ฐ์ง ์์ต๋๋ค. - ๊ฒ์ฆยท์์ : ํจํค์ง ๊ตฌ์กฐ ๊ฒ์ฌ CLI, ์ ์ฅ ์ ์ด๋ฆผ ๊ฒ์ฌ, ์ ์ฅ ๊ฒฐ๊ณผ ๋ณด๊ณ (
return_report=True).
์์ธํ ๋ด์ฉ: 5๋ถ ํต์คํํธ ยท ์ฌ์ฉ ๊ฐ์ด๋ ยท API ๋ ํผ๋ฐ์ค ยท ์์ ยท ์ง์ ๋งคํธ๋ฆญ์ค
doc = HwpxDocument.open("์ ์ฒญ์.hwpx")
values = {
"์ฑ๋ช
> right": "ํ๊ธธ๋",
"์์ > right": "ํ๋ซํผํ",
}
result = doc.tables.fill_by_path(values)
if result["failed_count"] or result["applied_count"] != len(values):
raise ValueError(result["failed"])
report = doc.save_to_path("์ ์ฒญ์-์์ฑ์๋ฃ.hwpx", mode="patch", fallback="error", return_report=True)๋ผ๋ฒจ์ด ๊ฒน์น๊ฑฐ๋ ์์ผ๋ฉด ์คํจ๋ก ๋๋ ค์ฃผ๊ณ ์ ์ฅํ๊ธฐ ์ ์ ๋ฉ์ถ ์ ์์ต๋๋ค. mode="patch"๋ ๊ณ ์น์ง ์์
ZIP ํํธ๋ฅผ ๋ฐ์ดํธ ๊ทธ๋๋ก ๋๋ผ๋ ๋ป์
๋๋ค. ๊ณ ์น ํํธ ์์ชฝ๊ณผ ํ๋ฉด ๋ฐฐ์น๋ ๋ฐ๋ก ํ์ธํด์ผ ํฉ๋๋ค. ์ ์ฅํ ํ์ผ์
๋ค์ ์ด์ด ๋ด์ฉ๊น์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์์ ํ ์ฐ๊ธฐ ๊ณ์ฝ์ ์์ต๋๋ค.
๋ ๋ฆฝ ์คํ ์์ ๋ก ํ์ํ์ง ์์ ๋ธ๋ก์ ์ฌ๋ฌ๋ถ์ด ๊ฐ์ง ๋ฌธ์๋ฅผ ์ ๋ ฅ์ผ๋ก ์ฐ๋ ์กฐ๊ฐ์ ๋๋ค. ์์ ๋ณ Python ๋ธ๋ก ํ์ ์ ์คํ ๊ธฐ๋ก์ ๋จ๊ฒจ ๋ก๋๋ค.
๋ง๋ ํ์ผ์ ์ค์ ํ์ปด์คํผ์ค๋ก ์ด์ด ๋ณด๊ณ ๊ทธ๋๋ก ์ ์ต๋๋ค. ์ซ์๋ง๋ค ์ฐ ๋ ์ง์ ํ๋ก๊ทธ๋จ ํ์ ๋ถ์ ๋๋ค.
๋ฐฐ์น: python-hwpx 6.9 ์ดํ main ยท 2026-10-25
| ๋ฌด์์ | ์ ๋ต | ๊ฒฐ๊ณผ |
|---|---|---|
| ๊ณต๊ฐ ์ค๋ฌธ์ 77๊ฑด์ ์ค ๋๋์ด ๊ฐ์ ๋ฌธ๋จ | ํ์ปด์คํผ์ค 2024 (Windows)๊ฐ ๋ฐฐ์นํด ์ ์ฅํ ๊ฒ | 8,246 / 8,263 (99.8 %) |
| ๊ทธ 77๊ฑด ์ค ๋ชจ๋ ์ค์ ์ชฝยท์์น๊ฐ ๊ฐ์ ๋ฌธ์ | ๊ฐ์ | 76 / 77 (๋๋จธ์ง 1๊ฑด์ ํ๊ฐ ๊นจ์ง ๋ฌธ์) |
| ์ค ๋ฐฐ์น ์ ๋ณด๋ฅผ ์ง์ด ์ฌ๋ณธ์ผ๋ก ์ถ์ ํ ์ชฝ ์๊ฐ ๊ฐ์ ๋ฌธ์ (๊ณต๊ฐ 79 ยท ๋น๊ณต๊ฐ ์ค๋ฌธ์ 522 ยท ๊ธฐ๋ฅ ์ํ ๋ฌธ์ 780) | ๊ทธ ๋ฌธ์๋ฅผ ์ ์ฅํ ํ/๊ธ์ ์ชฝ ์ | 1,344 / 1,381 (์ถ์ ํ์ง ์์ 16) |
์ด๋ฆผ: ํ์ปด์คํผ์ค 12 (macOS)
- ํ์ปด์์ ์ด๋ฆผ 120/120, ๋ ๋ ๊ฒ์ฆ 120/120: ๊ธฐ์ค ๋ฌธ์์ ์ ์ ๊ธฐ๋ฅ 6์ข (๊ฐ์ฃผยท๋๋ฆํยท์์ยท์ฐจํธยท์ฒดํฌ๋ฐ์คยทํธ์ง ๊ณํ)์ ์ค์ฌ์ ์ฐ ๊ฒ (5.7.0 ยท 2026-08-03)
- ํ์ปด์์ ์ด๋ฆผ 476/476: ๋๊ฒฐํ ์ฝํผ์ค ์ ์ฒด(N=497) (3.4.1 ยท 2026-07-19)
- ๊ณ ์น์ง ์์ ์์ญ์ ๋ฐ์ดํธ ๋ณด์กด 497/497, ๊ฐ์ธ์ ๋ณด ์ ์ถ 0
- ๋ ๋ ๊ฒ์ฆ 416/476: ํ์ปด์ด PDF ๋ด๋ณด๋ด๊ธฐ๋ฅผ ๊ฑฐ๋ถํ 43๊ฑด๋ ๋นผ์ง ์๊ณ ์ ์ต๋๋ค.
ChatGPT ์คํ ํ๊ฒฝ์์ ๋ง๋ ๋ฌธ์๋ฅผ ์ค์ ํ์ปด์คํผ์ค๋ก ์ฐ ๋ชจ์ต.
์ ์ฒด ์ซ์์ ์ฃผ์ํ ์ ์ ์ค์ธก ์ฝํผ์ค ๋ฉํธ๋ฆญ์, ๊ธฐ๋ฅ๋ณ ๋ฑ๊ธ์ ์ง์ ๋งคํธ๋ฆญ์ค์ ์์ต๋๋ค. ์ด ์ซ์๋ค์ "๋ง๋ ํ์ผ์ ํ/๊ธ์ด ์ด๋ป๊ฒ ๋ฐ๋๊ฐ"๋ฅผ ์ฐ ๊ฒ์ด๊ณ ํ์๊ฐ ๋ฌธ์๋ฅผ ์ผ๋ง๋ ์ ์ฝ๋์ง์๋ ๋ค๋ฅธ ์งํ์ ๋๋ค.
๊ฐ๋ฐ ๋จ๊ณ๋ Beta์
๋๋ค. ํ์ ํธํ์ ์งํค๋ ๋ฒ์๋ ์์ API ํ๋ฉด์ ์ ํ ์๊ณ ,
hwpx.experimental๊ณผ ์์์ "์คํ"์ด๋ผ๊ณ ์ ์ ๊ธฐ๋ฅ์ ๋ฐ๋ ์ ์์ต๋๋ค.
| ํ๊ฒฝ | ๋ฐฉ๋ฒ |
|---|---|
| ๋ก์ปฌยท์๋ฒ ํ์ด์ฌ | pip install python-hwpx (์คํฌ๋ฆฝํธยท๋ฐฐ์นยทCI) |
| ํ์ด์ฌ ์๋ํ (MCP ์์ด) | pip install python-hwpx-automation (์ ์ยท์์ ์ฑ์ยท๊ฒ์ฆ ์ํฌํ๋ก) |
| ์ผ๋ฐ ChatGPT ๋ํ | .hwpx์ Release wheel์ ํจ๊ป ์ฌ๋ ค ๋ํ ์์์ ์ค์น(์๋ด) |
| ChatGPT MCP ์ฑ | python-hwpx-automation์ MCP adapter๋ฅผ ์ปค๋ฅํฐ๋ก ๋ฑ๋ก |
| Codex ๋ง์ผํ๋ ์ด์ค ํ๋ฌ๊ทธ์ธ | hwpx-plugins ์ค์น |
| Claude Code ยท Hermes ยท OpenClaw | ๊ฐ์ MCP ์๋ฒ๋ฅผ ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ฑ๋ก (python-hwpx-automation) |
์ผ๋ฐ ChatGPT ๋ํ์์ ์์ .hwpx๋ฅผ ์ฌ๋ฆฌ๊ณ ๋ถํํ๋ฉด, ์์์ ๊ทธ๋๋ก์ด๊ณ ๊ฐ๋ง ์ฑ์ด ๋ฌธ์๊ฐ ๋์์ต๋๋ค.
ChatGPT ์ฑํ
์ ํ์ด์ฌ ํ๊ฒฝ์ PyPI์ ์ ์ํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋์ ์ต์ Release์
python_hwpx-*.whl์ ๋ฌธ์์ ํจ๊ป ์ฌ๋ฆฌ๊ณ ์ด๋ ๊ฒ ๋ถํํฉ๋๋ค.
์ฒจ๋ถํ python_hwpx-*.whl ์ pip ๋ก ์ค์นํ ๋ค์(pip install /mnt/data/python_hwpx-*.whl),
์ด .hwpx ํ์ผ์ python-hwpx ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด์ด์ ์์
ํด์ค.
์์๊ณผ ์์์ ๊ทธ๋๋ก ๋๊ณ , โโ๋ง ๋ฐ๊ฟ์ ์ ํ์ผ๋ก ๋๋ ค์ค.
์ค์น๋ถํฐ ๊ฒฐ๊ณผ ํ์ผ๊น์ง ๋ํ ์์์ ๋๋๋ฏ๋ก ๋ด ์ปดํจํฐ์ ํ์ด์ฌ์ด ์์ด๋ ๋ฉ๋๋ค. wheel์ ์์กด์ฑ์ lxml
ํ๋์ด๊ณ ์คํ ํ๊ฒฝ์ ์์ผ๋ฉด lxml wheel๋ ํจ๊ป ์ฌ๋ฆฝ๋๋ค. ์์ด์ ํธ์ฉ ์ง์๋ฌธ์ AI ์ฑํ
ํ๊ฒฝ์์ ์ฐ๊ธฐ์,
AI ๋๊ตฌ๊ฐ API๋ฅผ ์ ํํ ์ตํ๋๋ก ๋ง๋ llms.txt๋ ์์ต๋๋ค.
| ์ ์ฅ์ | ์ญํ | |
|---|---|---|
| ๐ฆ | python-hwpx |
HWPX ๋ฌธ์๋ฅผ ์ฝ๊ณ ยท๊ณ ์น๊ณ ยท๋ง๋๋ ์์ ํ์ด์ฌ ์์ง |
| ๐ | python-hwpx-automation |
์ ์ยท์์ ์ฑ์ ์ํฌํ๋ก, hwpx CLI, ์ ํํ MCP ์๋ฒ |
| ๐ฏ | hwpx-plugins |
์์ด์ ํธ๊ฐ ์๋ง์ ๋๊ตฌ๋ฅผ ๊ณ ๋ฅด๋๋ก ๋๋ ํ๋ฌ๊ทธ์ธ/์คํฌ ๋ฒ๋ค |
| python-hwpx | pyhwpx | pyhwp | |
|---|---|---|---|
| ๋ค๋ฃจ๋ ํ์ | .hwpx, .hwp (HWP 5.0) ์ฝ๊ธฐยท์ฐ๊ธฐ |
.hwpx |
.hwp (v5 ๋ฐ์ด๋๋ฆฌ) |
| ํ/๊ธ ์ค์น | ํ์ ์์ | ํ์ (Windows COM) | ํ์ ์์ |
| ์ด์์ฒด์ | Linux / macOS / Windows / CI | Windows ์ ์ฉ | Linux / macOS / Windows |
| ํธ์งยท์์ฑ | โ | โ (ํ/๊ธ์ด ํจ) | ๋๋ถ๋ถ ์ฝ๊ธฐ |
| ํ/๊ธ ์์ด ์ชฝ ์ ์ถ์ | โ (์คํ) | ํ/๊ธ์ด ๊ณ์ฐ | โ |
| AI ์์ด์ ํธ ์ฐ๋ (MCP) | โ (automation ๊ฒฝ์ ) | โ | โ |
add_shape()ยทadd_control()์ ์ ์์ค ํ์ถ๊ตฌ๋ผ, ๊ทธ๋๋ก ์ ์ฅํ๋ฉด ํ/๊ธ์ด ์ด์ง ๋ชปํ๋ ํ์ผ์ด ๋ฉ๋๋ค(๋ถ๋ฅผ ๋ ๊ฒฝ๊ณ ๋ง ๋์ต๋๋ค). ๋ํ์ ํ/๊ธ์ด ์๊ตฌํ๋ ํ์ ์์๊น์ง ๋ง๋๋add_line()ยทadd_rectangle()ยทadd_ellipse()ยทadd_arc()ยทadd_polygon()ยทadd_curve()ยทadd_connector()ยทadd_container()(๋ฌถ์)๋ฅผ, ์ปจํธ๋กค์add_column_definition()ยทadd_bookmark()ยทadd_hyperlink()๋ฅผ ์ฐ์ธ์.- ๊ทธ๋ฆผ์ ๋ฐ๊ธฐยท๋๋นยทํ์์กฐยทํ๋ฐฑยทํฌ๋ช
๋, ์ค์ ํ
๋๋ฆฌ, ์๋ฅด๊ธฐ(
crop), ๊ทธ๋ฆผ์ยท๋น๋จยท๋ถ๋๋ฌ์ด ๊ฐ์ฅ์๋ฆฌยท๋ฐ์ฌ (shadowยทglowยทsoft_edgeยทreflection)๋ฅผadd_picture()์ธ์๋ก ์ค ์ ์์ต๋๋ค. ๋ค์ง๊ธฐ์ ํ์ ์ ์์ง ์ ๋ฉ๋๋ค. - ์ชฝ ์ ์ถ์ ๊ณผ ์ค ๋ฐฐ์น ์ ๋ณด ์ฐ๊ธฐ๋ ์คํ ๊ธฐ๋ฅ์ ๋๋ค. ๋ฐ๋ฅด์ง ๋ชปํ๋ ์์๊ฐ ์์ผ๋ฉด ์ถ์ ํ์ง ์๊ณ ๊น๋ญ์ ๋๋ ค์ค๋๋ค. ์ง๊ธ์ ์ค ๋ฐฐ์น ์ ๋ณด ์์ด ๊ธ์ ๊ฒฉ์๋ฅผ ์ฐ๋ ๋ฌธ๋จ, ๊ทธ๋ฆฌ๊ณ ํ ์นธ ์์์ ๊ธ ์ฌ์ด์ ๋์ด๊ฑฐ๋ ๋ ์๋ ํ ๊ฐ์ด๋ฐ ์ชฝ ๋์ด ์ด์ธ๋ฆผยท๊ธ ๋คยท์ ํ๋ ์ฌ๋ฌ ์ค์ง๋ฆฌ ํ์ ๊ฐ๋ก์ง๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ์ฌ๊ธฐ์ ๋ญ๋๋ค. ๊ทธ ๋ฐ์ ์นธ ์ ํ๋ ์ชฝ ๋์์ ํ ์ฌ์ด๋ก ๋๋๋ ๊ฒ๊น์ง ํ/๊ธ์ฒ๋ผ ๋ฐฐ์นํฉ๋๋ค. ํ๋ฅผ ์ฝ๊ณ ๊ณ ์น๋ ๊ธฐ๋ฅ์ ์ด์ ์๊ด์์ด ํ ์์ ํ๊น์ง ๋ค๋ฃน๋๋ค.
- ์ํธ๋ฅผ ๊ฑด HWPX์ ์ํธยท๋ฐฐํฌ์ฉ HWP๋ ์ง์ํ์ง ์์ต๋๋ค(HWP๋
Hwp5Error๋ก ๊ฑฐ๋ถํฉ๋๋ค).
help wanted ยท ๋ก๋๋งต ยท Discussions ยท CONTRIBUTING
HWPX ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ์ฒ์์ด๋ผ๋ฉด ๋ด๋ถ ์ค์ ๊ฐ์ด๋๋ถํฐ ๋ณด์ธ์. ์ค์ ํ/๊ธ ๋์์ผ๋ก ํ์ธํ ์กฐํ ์บ์, ๋ชฉ์ฐจ ํ๋, OPC ์ฌ์์ถ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํด ๋์์ต๋๋ค. ๊ณต๊ฐ API์ ์์ ๋ฒ์๋ ์์ API ํ๋ฉด, ๊ณ์ธต ์ฌ์ด์ ์์ ๊ถ์ ์ ํ ๊ฒฝ๊ณ ๋ฌธ์์ ์์ต๋๋ค.
์๋ ๊ณต๊ฐ ํ์ค๊ณผ ํ๋ก์ ํธ์ ๋น์ง๊ณ ์์ต๋๋ค.
- OWPML, ๊ฐ๋ฐฉํ ์๋ํ๋ก์ธ์ ๋งํฌ์ ์ธ์ด (KS X 6101): HWPX์ ๋ฐํ์ธ ํ๊ตญ ์ฐ์ ํ์ค
- hancom-io/hwpx-owpml-model: OWPML ์์ ๊ตฌ์กฐ ์ฐธ์กฐ ๋ชจ๋ธ
- neolord0/hwpxlib: ๊ฒฌ๋ณธ ์ฝํผ์ค
- edwardkim/rhwp: ๋ฉฑ๋ฑ์ฑยท๊ฒ์ฆ ๊ฒ์ดํธ ์ค๊ณ์์ ์๊ฐ์ ๋ฐ์๊ณ ๋ค๋ฅธ ๋ทฐ์ด ํธํ์ ํ์ธํ ๋ ์๋๋ค
- ๋ฒ์ ๋ถ์คํผ์ค: ๊ณต๋ฌด ๋ฌธ์ ํธ์ง ์ํฌํ๋ก ์์ด๋์ด
Apache-2.0 (LICENSE ยท NOTICE) ยท Kohkyuhyun @airmang ยท kokyuhyun@hotmail.com

