본문 바로가기
업무자동화/파이썬-아래아한글 자동화 기초

[한/글자동화 예제]현재 선택영역에 글자속성 적용하기

by 회사원코딩 2020. 12. 14.

반말체를 쓰니까, 포스팅 작성속도가 월등히 올라가길래 그렇게 할 예정.

우선, 특정 영역에 찾아가거나 선택하는 방법은 다양하다. "찾기Ctrl-F"를 사용하거나, "탐색GetText" 메서드를 사용하거나, 아날로그하게 캐럿위치를 "아래로 몇줄 우측으로 세 번째 단어" 식으로 옮길 수도 있으며, 특정 좌표를 찍고 바로 캐럿을 옮길 수도 있다. 필자가 애용하는 방법은 "찾기"와 "GetText"이며, 특정 상황에는 미리 만들어놓은 누름틀(Field)을 사용하는 게 캐럿이동이나 블록선택에 가장 효율적일 수 있다. 하여튼 [특정영역 선택]은 다른 포스팅에서 자세히 다루기로 하고,

특정영역을 선택했다고 치자.

이 영역에 특정 글자속성(이 예제에서는 "이탤릭")을 적용하고 싶다면?

1. 한/글API 중에 이런 명령어가 있다. 파이썬 기준으로,

hwp.HAction.Run("CharShapeItalic")

# 혹은 간단히
hwp.Run("CharShapeItalic")

딱 한 줄이다. 엄청나게 간단한 데 반해, 단점이 있는데,

이미 기울임이 적용된 영역을 선택해놓고 저 명령어를 실행하면 기울임이 취소된다.

그래서 현재 선택영역에 "이탤릭"이 적용되어 있는지를 확인하는 기능이 필요한데,

아래와 같이 실행하면 된다.

Act = hwp.CreateAction("CharShape")  # 액션테이블에서 "글자 모양" 검색, 액션아이디에서 "CharShape" 찾음
Set = Act.CreateSet()  # 액션 파라미터 개념의 "세트" 생성
Act.GetDefault(Set)  # 세트 초기화(각 파라미터에 현재 선택영역의 값을 적용)
print(Set.Item("Italic"))

# 1: 적용되어 있다,  0: 적용되어 있지 않다, None: 일부 적용되어 있다.
# "Italic"을 적용하려면 이어서 아래 두 줄을 입력한다.
Set.SetItem("Italic", 1)
Act.Execute(Set)

네 줄 정도의 짧은 코드지만, 편의를 위해 단축명령어도 하나 준비해놓았다.

hwp.CharShape.Item("Italic")
# 1:기울임 적용된 상태, 0:기울임 미적용 상태, None:일부 기울임 적용상태

그러면, 제 기능을 하는 "기울임 적용" 명령어는 아래와 같을 것이다.

if hwp.CharShape.Item("Italic") != 1:
    hwp.Run("CharShapeItalic")

 

그리고 한/글에서는 위 메서드와 조금 다른 단축방식도 하나 제공하고 있는데(;;;;), 이게 꽤 간편하다. (손에 익지는 않;)

이렇게 세 줄로 입력하는 방법이다.

이런 방식이면 굳이 if문을 사용할 필요도 없기 때문에, 코드가 전체적으로 간편해진다.

어느 쪽이 빠르거나 유의미하게 간편하지는 않다.

API매뉴얼 일부에서는 "내부적으로는 동일하다"고 소개하고 있다.

각자 편한 방법, 잘 읽히는 방법으로 작성하는 것이 좋겠다.

이번 포스팅은 여기까지.

다음 포스팅은, 글자크기를 조절하는 방법들을 알아보자.

즐거운 자동화 하시길~

728x90
반응형

댓글0