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

파이썬으로 한/글 프로그램이 현재 "쪽윤곽 보기" 상태인지 확인/설정하는 방법

by 일코 2022. 2. 2.

출처 : hancom.com 개발자 커뮤니티

한/글 문서를 다루시는 분들 중에는

아마 솔루션 관련해서 일하시는 분들인가 싶은데

문서 데이터가 아니라,

"쪽윤곽 보기 상태"나, "오탈자의 붉은 줄 없애기" 같은

내용으로 종종 질문 주실 때가 있어요.

 

이런 내용들이 API문서에 장황하게 설명되어 있지는 않지만,

꼼꼼히 읽어보면 대부분 해결책이 나오기는 하거든요.

 

위 질문, "쪽윤곽 보기 상태 확인" 같은 경우도

API문서와 스크립트 녹화로 간단히 체크 가능해요.

 

한 번 확인해볼까요?

한/글을 열고 Ctrl-G-L을 여러 번 눌러보면,

아래는 쪽윤곽 보기 상태,

쪽윤곽 보기 상태

 

아래는 쪽윤곽 숨김 상태예요.

쪽윤곽 숨김 상태

 

액션테이블 문서를 읽어보면

쪽윤곽을 토글하는 명령어는 ViewOptionPaper라고 하네요.

hwp.HAction.Run("ViewOptionPaper")

 

 

그런데!!!

질문 남겨주신 분처럼, 토글 명령어가 아니라

현재 쪽윤곽 보기 상태를 체크하는 방법도 있을까요?

당연히 있죠.

먼저 스크립트녹화를 해 보겠습니다.

쪽윤곽 보이는 상태에서 숨기는 스크립트는,

function OnScriptMacro_script1() {
    HAction.GetDefault("ViewZoom", HParameterSet.HViewProperties.HSet);
    with (HParameterSet.HViewProperties) {
        ZoomType = HwpZoomType("FitWidth");
    }
    HAction.Execute("ViewZoom", HParameterSet.HViewProperties.HSet);
    HAction.Run("ViewOptionPaper");
}

 

쪽윤곽 숨겨진 상태에서 보이게 하는 스크립트는,

function OnScriptMacro_script1() {
    HAction.GetDefault("ViewZoom", HParameterSet.HViewProperties.HSet);
    with (HParameterSet.HViewProperties) {
        ZoomType = HwpZoomType("AutoFitWidth");
    }
    HAction.Execute("ViewZoom", HParameterSet.HViewProperties.HSet);
    HAction.Run("ViewOptionPaper");
}

 

가만히 읽어보니까, 네 번째 줄만 차이가 있어요.

"FitWidth"냐, "AutoFitWidth"냐 차이네요.

그럼 이 ZoomType의 값만 확인하면 현재 상태를 파악할 수 있겠네요?

API 문서를 참조해서 아래의 짧은 코드를 작성해보았습니다.

한 번 실행해봅시다.

act = hwp.CreateAction("ViewZoom")
Set = act.CreateSet()
act.GetDefault(Set)
print(Set.Item("ZoomType"))

# 7이면 "쪽윤곽 보이는 상태"
# 2이면 "쪽윤곽 숨겨진 상태"

각각 7과 2를 리턴하네요.

7과 2는 뭘 의미하냐면, HwpZoomType의 값을 나타내요.

아래를 참고해주세요.

7은 쪽윤곽 보임, 2는 쪽윤곽 숨김 상태를 나타내는 값이네요.

 

그럼 마지막으로

토글 명령어가 아닌,

현재 어떤 상태든지, "쪽윤곽 보임"으로 설정하는 메서드는 없을까요?

간단해요. 아래처럼 실행하시면 돼요.

# 쪽윤곽 보이게 설정하기

act = hwp.CreateAction("ViewZoom")
Set = act.CreateSet()
act.GetDefault(Set)
Set.SetItem("ZoomType", hwp.HwpZoomType("AutoFitWidth"))
act.Execute(Set)

여러 번 실행해도 "쪽윤곽 보임" 상태

혹은 위에서 녹화했던 "쪽윤곽 보이기" 스크립트 방식으로 실행하셔도 돼요. (같은 의미의 코드예요.)

hwp.HAction.GetDefault("ViewZoom", hwp.HParameterSet.HViewProperties.HSet)
hwp.HParameterSet.HViewProperties.ZoomType = hwp.HwpZoomType("AutoFitWidth")
hwp.HAction.Execute("ViewZoom", hwp.HParameterSet.HViewProperties.HSet)

스크립트매크로를 파이썬 문법으로 변환한 코드. 위와 동일한 동작.

알고 보니 포스팅 제일 위에 이미 답이 있었네요..

 

질문 주신 분은 파이썬 유저는 아니시지만,

hwpCtrl 코드는 어느 언어에서든 비슷하게 작동하니까...

부디 이 포스팅이 도움이 되었으면 좋겠습니다^^

 

행복한 하루 되세요!

댓글