Type Here to Get Search Results !

04 Go언어:HWP자동화: gohwp package

여기서는 gohwp package를 소개합니다.

gohwp

  • OLE Automation을 통해 한글(HWP) 자동화를 Go언어로 이용하기 위한 패키지입니다.
  • Python을 좋아하긴 하지만 Go언어를 익히고 싶었습니다. Python을 이용한 HWP 자동화 예제는 많은데, Go언어로 어떻게 할 수 있을까 고민하고 시도해보다가 만든 패키지입니다.
  • 한글오토메이션의 API 매뉴얼에 나온 것들을 가급적 많이 구현하고자 하였으나, 미구현 된 부분이 많이 있긴합니다. 


github 저장소

github 저장소는 다음과 같습니다.

github.com/b612nightsky/gohwp


gohwp 설치

github에서도 설명을 해놓았지만 설치는 다음과 같습니다.

go get github.com/b612nightsky/gohwp

앞선 포스팅 글에 Go언어로 go-ole 패키지와 한글 오토메이션을 이용하여 HWP를 실행하고, 새 문서창이 보이게 하는 것을 기록으로 남겨 놓았습니다. 파이썬하고 비교가 안되게 긴 코드를 작성해야 했었는데, gohwp패키지를 이용하면 다음과 같이 단순해 집니다.

package main

import (
 "github.com/b612nightsky/gohwp"
)

func main() {
  hwp := gohwp.Initialize()   // 초기화
  defer hwp.UnInitialize()
  hwp.ShowWindow(true)        // hwp문서창 보이기
  hwp.InsertText("안녕하세요") // 문자입력
}

Go언어가 컴파일 언어이지만 마치 스크립트 언어마냥 HWP 자동화 코드를 작성하게 하려 했습니다. 


만들게 된 이유가...

개인적으로 python을 참 좋아하기도 하고 많이 이용하긴 합니다만, 가끔은 스크립트 언어라는 게 아쉬울 때가 있었습니다. 그래서 HWP 한글 자동화하는 코드는 컴파일 언어로 해봐야겠단 생각을 가지고 Go언어로 시도를 해봤습니다.

Go언어와 go-ole 패키지를 이용한 HWP 자동화는 간단히 생각하면 GetProperty, PutProperty, CallMethod 메서드의 반복이긴 합니다. 그런데 막상 코드를 작성하다보면 error 확인, 자료형 확인, 형 변환 등 정말 성가신 작업의 연속이고, 생산성이 정말 떨어집니다. 몇 번 하다보면 "그냥 때려치우고 python으로 할까?" 생각이 간절해집니다. 

Go언어도 1.18버전부터 generic을 지원한다고 하지만 python처럼 간단하게 느껴지진 않습니다. HWP와 관련하여 python으로는 간단하게 정수 값을 다뤄도 Go언어로 하다보면 int16, uint16, int32, uint32, int, unit 아주 드물게는 uint8도 나타납니다. 심지어 pdf 매뉴얼에 기술된 자료형과 실제 자료형이 다른 부분도 꽤 나타납니다. 이렇다 보니 간단한 코드 하나 만드려해도 지루한 작업의 반복이라 실제 Go언어로 HWP 자동화하여 업무에 써먹은 적은 없습니다.

몇 가지 예제를 구현 해보다가 도저히 그냥 못 써먹겠다 싶어 결국 gohwp라는 패키지를 만들었습니다. 대단한 것은 아니고 앞서 언급한 GetProperty, PutProperty, CallMethod의 반복적인 행위와 자료형(타입) 확인 및 변환 등을 미리 메서드로 구현해놓은 것이라 생각하시면 됩니다.


앞으로는 이 gohwp 패키지를 이용해서 어떻게 HWP 문서를 다루는지 하나씩 예제를 다뤄볼까 합니다.

댓글 쓰기

0 댓글
* Please Don't Spam Here. All the Comments are Reviewed by Admin.