본문 바로가기
아래아한글 자동화/python+hwp 중급

[한/글자동화 예제] 글자크기를 임의로 바꾸는 간단한 방법

by 일코 2020. 12. 15.

앞 포스팅에서는 글자 속성을 적용하는 여러가지 방법에 대해 알아보았다.

2020/12/14 - [파이썬-아래아한글 자동화 기초] - [한/글자동화 예제]현재 선택영역에 글자속성 적용하기

 

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

반말체를 쓰니까, 포스팅 작성속도가 월등히 올라가길래 그렇게 할 예정. 우선, 특정 영역에 찾아가거나 선택하는 방법은 다양하다. "찾기Ctrl-F"를 사용하거나, "탐색GetText" 메서드를 사용하거나,

www.martinii.fun

재미있는 것은, 글자 크기도 속성이므로, 동일한 방법으로 현재 글자크기 정보를 얻거나, 크기를 조정할 수도 있다.

가장 아날로그한 방법부터 알아보자.


1. Shift-Alt-E를 사용하는 방법

hwp.Run("CharShapeHeightIncrease")  # 글자가 1포인트씩 커진다.
hwp.Run("CharShapeHeightDecrease")  # 글자가 1포인트씩 작아진다.

2010 이하 버전에서는 글자가 커지는 폭이 약간 제멋대로였다. 이후 버전부터 현재까지는 무조건 1씩 커지기 때문에,

크기조절이 용이하다. 다만, 100포인트 정도 키우려면 글자가 커지는 광경을 한없이(처럼 느껴질 만큼 오래) 지켜봐야 한다...

파이썬의 for문으로 글자1포인트 키우기X100회

하지만 더 효율적인 방법이 있다.


2. 앞의 포스팅처럼 액션과 아이템셋을 이용해서 수정하는 방식

API명령어로 글자크기를 한번에 100pt로 변경

위 예제의 SetItem 안에 들어가 있는 10,000은 HwpUnit으로, 아래아한글에서 기본이 되는 길이의 단위이다.

100HwpUnit1Point,
1인치는 정확히 7200HwpUnit
그리고 1밀리미터는 약 283.465HwpUnit이다. (정확히 떨어지지 않는다.)

한국인 특성상 밀리미터를 HwpUnit으로 변환하는 경우가 많기 때문에
친절하게 한/글에서는 hwp.MiliTohwpUnit(밀리미터) 라는 메서드를 제공하고 있다.

마지막으로 보여줄 방식은, 이 모든 걸 몰라도 사용할 수 있는 방식이다. 바로,

3. 스크립트매크로 녹화로 코드 찾아내기

다만, 이게 만능은 아니다. 필자가 (개인적으로) 한/글 관련 메서드 검색하는 순서는 아래와 같다.

1. 가급적, hwp.Run 명령어 또는 Ctrl API메서드 검색(해당문서 : HwpCtrl API.hwp)
2. hwp.CreateAction으로 액션과 아이템셋을 생성하는 메서드(해당문서 : Action Table.hwp & ParameterSet Table.hwp)
3. API매뉴얼에는 없지만 매크로 녹화를 통해 코드 추출

매크로 녹화가 굉장히 간편함에도 이를 지양하는 이유가 세 가지 정도 있는데,

1. 파이썬에서 실행하려면 "hwp."을 붙이는 등의 귀찮은 문법작업을 해줘야 함

2. 오류가 나거나 원하는 동작이 나오지 않을 때 해결방법을 찾기 어려움

3. 코드가 굉장히 길어짐

그럼에도 불구하고, 작업방법을 움짤로 남겨놓는다.

아래는 짧은 스크립트 매크로 녹화방법

매크로 녹화해서 자바스크립트 추출하는 과정

아래는 파이썬 스크립트로 변환하는 과정이다. 사용한 IDE는 파이참.

녹화한 스크립트를 파이썬 코드로 바꾸는 과정. 40초 내외 걸림 (파이참 사용)

아래는 변환한 코드로 한/글에 적용하는 모습

녹화한 코드를 파이썬에서 실행해도 잘 됨. (모든 경우에 잘 되는 것은 아님...)


교육적인 포스팅은 아니었지만,
자동화 코드를 짤 때 시도해볼 수 있는 다양한 방법과, 시연영상을 보여드린 데 의의를 둔다.

다음 포스팅은, 또 문의 주신 콘텐츠로 진행해볼 것.

 

댓글