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님께 감사드립니다. 덕분에 이 포팅 작업이 가능했습니다.

감사합니다!

21개의 좋아요

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개의 좋아요