HwpLibSharp 1.1.7-preview1 ์ถœ์‹œ

์˜ค๋žซ๋™์•ˆ .NET ํ™˜๊ฒฝ์—์„œ HWP ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ๊ธฐ๋‚˜๊ธด ์ˆ™์› ์‚ฌ์—…๊ฐ™์€ ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ๊ธ€๊ณผ์ปดํ“จํ„ฐ์—์„œ ๊ณต์‹ SDK๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ์‚ฌ์‹ค ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋น„์‹ธ๊ณ  ํŠน์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์œˆ๋„์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋„๋ฆฌ ์“ฐ์ด๋˜ COM ๊ธฐ๋ฐ˜ API๋Š” ์‹ค์ œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•จ์€ ๋ฌผ๋ก  ์ตœ๊ทผ์—๋Š” ๊ณต์‹ ์ง€์›๊นŒ์ง€ ์ค‘๋‹จ๋˜์–ด์„œ ํ•œ๊ธ€ ํŒŒ์ผ์€ ์ •๋ง ๋‹ค๋ฃจ๊ธฐ ๊ณจ์น˜์•„ํ”ˆ ๊ทธ๋Ÿฐ ๋””์ง€ํ„ธ ์ž์‚ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑํ˜• AI ๊ธฐ๋ฐ˜์˜ ์ฝ”๋“œ ์–ด์‹œ์Šคํ„ดํŠธ๊ฐ€ ๋Œ€์ค‘ํ™”๋œ ๊ฒƒ์„ ๊ณ„๊ธฐ๋กœ ์ด๋ฒˆ์— ์ €๋Š” Java๋กœ ์ž‘์„ฑ๋œ ์˜คํ”ˆ์†Œ์Šค HWP ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ neolord0/hwplib๋ฅผ .NET์œผ๋กœ ํฌํŒ…ํ•˜์—ฌ NuGet์— ์ถœ์‹œํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌํŒ…ํ•œ ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ์ด๋ฆ„์€ HwpLibSharp์ž…๋‹ˆ๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HWP ํŒŒ์ผ์„ ์ฝ๊ณ , ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ , ํ‘œ๋‚˜ ์ด๋ฏธ์ง€ ๊ฐ™์€ ์š”์†Œ๋“ค์„ ํƒ์ƒ‰ํ•˜๊ณ , ์ˆ˜์ • ํ›„ ๋‹ค์‹œ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์š”์ฆ˜ ํ™”๋‘์ธ RAG ํŒŒ์ดํ”„๋ผ์ธ์—์„œ HWP ๋ฌธ์„œ์˜ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๋Š” ์šฉ๋„๋กœ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.NET 8.0์„ ํƒ€๊ฒŸ์œผ๋กœ ํ•˜๊ณ  ์žˆ๊ณ , OLE ๋ณตํ•ฉ ๋ฌธ์„œ ์ฒ˜๋ฆฌ์—๋Š” OpenMcdf๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Native AOT ์ปดํŒŒ์ผ๋„ ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„์ง ์‹คํ—˜์ ์ธ ํ”„๋กœ์ ํŠธ๋ผ API๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ณ , ๋ชจ๋“  HWP ๊ธฐ๋Šฅ์„ ์™„๋ฒฝํžˆ ์ง€์›ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์„œ ์ฝ๊ธฐ/์“ฐ๊ธฐ, ํ…์ŠคํŠธ ์ถ”์ถœ, ํ‘œ ์ฒ˜๋ฆฌ, ํ•„๋“œ(๋ˆ„๋ฆ„ํ‹€) ์กฐ์ž‘ ๋“ฑ์€ ์ž˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

dotnet add package HwpLibSharp

์‚ฌ์šฉํ•ด๋ณด์‹œ๊ณ  ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ์ด์Šˆ๊ฐ€ ์žˆ์œผ์‹œ๋ฉด GitHub์— ๋‚จ๊ฒจ์ฃผ์„ธ์š”. ๊ธฐ์—ฌ๋„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

๋งˆ์ง€๋ง‰์œผ๋กœ, ์›๋ณธ Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์‹  neolord0๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋•๋ถ„์— ์ด ํฌํŒ… ์ž‘์—…์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

16๊ฐœ์˜ ์ข‹์•„์š”

OpenMcdf๋„ .NET Standard 2.0์„ ํƒ€๊ฒŸํŒ…ํ•˜๊ณ  ์žˆ์œผ๋‹ˆ HwpLibSharp๋„ .NET Standard 2.0 ํƒ€์ผ“ํŒ…์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๋” ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”.

2๊ฐœ์˜ ์ข‹์•„์š”

ํ”ผ๋“œ๋ฐฑ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Java ๋ฒ„์ „์˜ ์ฝ”๋“œ๋ฅผ ์ผ๋‹จ ๋ชจ๋‘ ํฌํŒ…ํ•œ ๋‹ค์Œ ์•ˆ์ •์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋Š”๊ฒŒ ์ตœ์šฐ์„  ๊ณผ์ œ์˜€๊ธฐ ๋•Œ๋ฌธ์— .NET Standard 2.0์„ ๋ฐ”๋กœ ํƒ€๊ฒŸํŒ…ํ•˜์ง€๋Š” ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ , ์ง€๊ธˆ์œผ๋กœ์„œ๋Š” Navix ๊ฐ™์€ ๊ตญ์‚ฐ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ๊นŒ์ง€ ๋ฐฐํฌ๋˜์–ด์žˆ๋Š” ๋ฒ”์šฉ LTS์ธ .NET 8.0๊ณผ Native AOT๋ฅผ ํƒ€๊ฒŸ์œผ๋กœ Preview 1์˜ ๋ฒ”์œ„๋ฅผ ๋จผ์ € ์žก์•˜์Šต๋‹ˆ๋‹ค.

์ œ์•ˆ์ฃผ์‹ ๋Œ€๋กœ .NET Standard 2.0 ํ”„๋กœํ•„๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์„์ง€ ์—ฌ๋ถ€๋ฅผ Preview 2์˜ ๊ณผ์ œ๋กœ ์ถ”๊ฐ€ํ•ด๋‘๊ฒ ์Šต๋‹ˆ๋‹ค! :smile:

1๊ฐœ์˜ ์ข‹์•„์š”

๊ฐœ์ธ์ ์œผ๋กœ ํ•œ๊ธ€์ด ๋Œ€๋‹จํ•œ๊ฒƒ์ด ์˜ˆ์ „์— viewer๋งŒ ๊ณต๊ฐœํ–ˆ๋Š”๋ฐ ๊ทธ๊ฑธ ๊ธฐ๋ณธ๋ฒ„์ „์—์„œ ํŽธ์ง‘๊ธฐ๋Šฅ๋งŒ ๋ง‰์•„๋†“๊ณ  ๋ฐฐํฌํ•ด์„œ ๋ทฐ์–ด ์šฉ๋Ÿ‰์ด ๋ช‡๋ฐฑ๋ฉ”๊ฐ€ ๋˜๋Š” ์—ฝ๊ธฐ์ ์ธ ์ง“์„ ๋ณด๊ณ  ํ˜€๋ฅผ ๋‚ด๋‘˜๋ €์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ํ•œ๊ธ€๋ทฐ์–ด๊ฐ€ ๋”ฐ๋กœ ์ œ๊ณต๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ
์ด๊ฑธ ํ˜ผ์ž ๋งŒ๋“œ์‹œ๋‹ค๋‹ˆ ๋Œ€๋‹จํ•˜์‹ญ๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

์ œ๊ฐ€ ๋งŒ๋“  ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , neolord0 ๋‹˜์˜ ์ฝ”๋“œ๋ฅผ ๊ทธ์ € AI ์ฝ”๋“œ ์–ด์‹œ์Šคํ„ดํŠธ์˜ ํž˜์„ ๋นŒ๋ ค ๊ฐ€์ ธ์™”์„ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ •๋ง ๋Œ€๋‹จํ•œ ์ผ์„ ํ•˜์‹  ๋ถ„์€ ๋”ฐ๋กœ ๊ณ„์‹œ์ฃ . ใ…Žใ…Ž

1๊ฐœ์˜ ์ข‹์•„์š”