Type Here to Get Search Results !

13 Go언어:HWP자동화: 누름틀 이용하기(1)

 


이번에는 Go언어와 gohwp를 이용하여 hwp 한글 문서에 누름틀을 만들어 보겠습니다.

HWP에서 누름틀은 특정한 내용의 데이터를 입력할 수 있도록 하는 기능으로, 일종의 서식 영역이라고 할 수 있습니다. 제가 쓴 글이긴 하지만 무슨 말인가 싶긴 합니다. 저도 참 오랫동안 HWP를 사용하면서도 오랜 기간 사용하지 않았었고, 누름틀이 있는 문서를 보면서도 별 생각 없이 지나치곤 했습니다. 누름틀의 예시를 보면 아래와 같습니다.

빨간색 글씨로 "이곳에 성명을 입력하세요"라고 쓰여 있는데, 실제 커서를 해당 위치에 놓으면 빨간색 글씨를 지울 것 없이 그냥 성명을 입력하면 됩니다. 위와 같은 경우, 누름틀을 해당 서식의 안내 역할로 사용한 경우 입니다. 

다른 예로서, 인쇄할 때 누름틀을 제외하고 인쇄할 수 있어서 선생님들이 문제를 만들 때, 문제 답안을 누름틀로 입력해놓는 경우도 있다고 합니다.

근데, 누름틀을 만드는 것을 Go언어로 gohwp로 자동화 할 필요가 있을까 의문이 생길 겁니다. 결론적으로 말씀드리면 누름틀이 가지고 있는 속성 중 "필드 이름"이 있는데, "필드 이름"을 찾아 해당 위치로 커서를 이동하여 원하는 입력을 수행하게 하는 등 자동화 할 때 요긴하게 쓰일 수 있습니다.

이미 정형화된 문서에 일부 내용만 변경해야 하는 문서의 경우, 예를 들어 동일한 내용의 공문을 보내는 데 수신자만 다른 경우를 생각해보겠습니다. 이를 자동화하는 방법이야 많습니다. 

  • 제 경우 MS워드를 자동화 할 때 종종 쓰는 방법이긴 한데, 수신자 이름이 위치한 곳에 이름을 입력하지 않고 "$001$"과 같이 구분이 될 수 있는 기호 등을 입력하여, 자동화 할때 "$001$"을 찾아 원하는 내용으로 바꾸는 방법을 하기도 합니다.
  • 실은 위의 예시의 경우, 한글 HWP에는 "메일머지"라는 기능이 있습니다. 
  • 자동화 코드를 만든다면 누름틀의 "필드 이름"을 찾아서 해당 위치에 원하는 내용을 입력하게 하면 됩니다.


불필요한 설명이 길었는데요. 누름틀을 만드는 예제는 아래와 같습니다.

package main

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

func main() {
    hwp := gohwp.Initialize()
    defer hwp.UnInitialize()
    hwp.ShowWindow(true)
    hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModuleExample")

    hwp.InsertText("이것은 누름틀의 테스트입니다.\r\n")

    hwp.InsertText("누름틀의 이름은 ")
    hwp.CreateField("TEST", "설명 및 도움말", "testField")
    hwp.ActionObject().ActionEdit().MoveLineEnd()
    hwp.InsertText("입니다.\r\n")

    hwp.InsertText("누름틀의 이름은 ")
    hwp.CreateField("TEST", "설명 및 도움말", "testField")
    hwp.ActionObject().ActionEdit().MoveLineEnd()
    hwp.InsertText("입니다.\r\n")

    hwp.InsertText("누름틀의 이름은 ")
    hwp.CreateField("테스트", "설명 및 도움말", "테스트필드")
    hwp.ActionObject().ActionEdit().MoveLineEnd()
    hwp.InsertText("입니다.\r\n")
}

위의 코드를 실행하면 다음과 같이 나타납니다.

누름틀을 3개 만들었고, 이래저래 불필요한 코드들이 좀 있긴 합니다.

hwp.CreateField("TEST", "설명 및 도움말", "testField")

누름틀을 만들 때는 CreateField 메서드를 이용합니다.

CreateField 메서드는 3개의 문자열을 받게 되는데, 순서대로 "입력할 내용의 안내문", "메모 내용", "필드 이름"입니다.

무슨 소리야? 하신다면 아래 그림을 보시면 아주 조금 이해하는데 도움이 될 겁니다.

  • "입력할 내용의 안내문"은 누름틀에 아무것도 입력하지 않았을 때 나타나는 안내/지시문으로 앞서 "이곳에 성명을 입력하세요"와 같은 문구입니다.
  • "메모 내용"은 해당 누름틀에 대한 설명을 기술하면 됩니다.
  • "필드 이름"은 해당 누름틀을 구분할 수 있는 이름이자 주소라고 생각하시면 됩니다. 동일한 필드 이름이 있을 수도 있고, 아예 입력을 하지 않을 수도 있습니다. 다만, 자동화를 하려면 이 필드 이름을 유용하게 써야 합니다.

일단 여기까지 만드는 것을 간단히 보였고 다음에는 누름틀의 "필드 이름"을 찾아내는 방법, 누름틀에 문자열을 입력하는 방법 등을 살펴보겠습니다.



댓글 쓰기

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