반말체를 쓰니까, 포스팅 작성속도가 월등히 올라가길래 그렇게 할 예정.
우선, 특정 영역에 찾아가거나 선택하는 방법은 다양하다. "찾기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매뉴얼 일부에서는 "내부적으로는 동일하다"고 소개하고 있다.
각자 편한 방법, 잘 읽히는 방법으로 작성하는 것이 좋겠다.
이번 포스팅은 여기까지.
다음 포스팅은, 글자크기를 조절하는 방법들을 알아보자.
즐거운 자동화 하시길~
국내 유일의 파이썬+한컴오피스 자동화 입문강의
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
[한/글자동화 예제] 글자크기를 임의로 바꾸는 간단한 방법 (0) | 2020.12.15 |
---|---|
[3/4] 정관문서 서식잡기(장이름 중앙정렬, 위아래 빈라인 삽입) (0) | 2020.12.12 |
[2/4] 정관문서 서식잡기(장이름, 조제목만 굵게) (0) | 2020.12.11 |
댓글