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

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

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 코드는 어느 언어에서든 비슷하게 작동하니까...

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

 

행복한 하루 되세요!

반응형

댓글2

  • Quitryne 2022.02.03 04:37 신고

    안녕하세요, 이번에도 혼자 끙끙대다가 댓글로 여쭤봅니다. (저번에 알려주신 매크로 코드수정을 파이썬 문법으로 바꾸는 것들을 혼자 해봤는데 계속 실패했습니다 ㅜㅜ) 특정 문자열을 찾은 후 그 뒤에 있는 단어를 굵게+밑줄 처리하는, 그냥 한글문서로 작업하면 굉장히 단순한 매크로 인데요 파이썬으로 구현을 못하고 있습니다.
    (정확하게 말씀드리자면 FindDig 은 실행하지만, 그 이후에 찾고싶은 문자열을 입력한 후에 다시 텍스트로 커서를 옮기는 것을 못하고 있습니다.)

    시간이 편하실 때 답해주신다면 정말 감사드리겠습니다.

    다음과 같은 문자열이 있을 때 텍스트 내의 모든 "|"(shift+backslash) 를 찾아서 지우고 그 다음에 있는원문자 다음에 있는 문자열(because, is 등)을 "굵게 + 밑줄" 처리하려고 합니다. "|"의 개수는 정해져있지 않습니다.(최소 5개 많을때는 1,000개가 넘을 수도 있습니다) ex) "|①becuase" -> "①becuase(영단어만 굵고 진하게"

    "Food unites as well as distinguishes eaters |①because of what and how one eats forms much of one’s emotional tie to a group identity, |②is it a nation or an ethnicity. The famous twentieth-century Chinese poet and scholar Lin Yutang remarks, “Our love for fatherland is largely a matter of recollection of the keen sensual pleasure of our childhood. The loyalty to Uncle Sam is the loyalty to American doughnuts, and the loyalty to the Vaterland is the loyalty to Pfannkuchen and Stollen.” |③So keen connection between food and national or ethnic identification clearly indicates the truth that cuisine and table narrative occupy a significant place in the training grounds of a community and its civilization, and thus, eating, cooking, and talking about one’s cuisine |④are vital toa community’s wholeness and continuation? In other words, the destiny of a community |⑤depends on how well it nourishes its members."

    답글