안녕하세요?
웹기안기에서 현재 커서 위치가 페이지의 시작위치인지 아닌지 알수 있는 방법이 있을까요?
감사합니다.
안녕하세요?
웹기안기에서 현재 커서 위치가 페이지의 시작위치인지 아닌지 알수 있는 방법이 있을까요?
감사합니다.
어떤 목적으로 이런 기능을 구현하려고 하시는지 궁금합니다.
몇 가지 액션을 조합하면 구현이 가능합니다.
① 현재 위치를 저장한다. (GetPos)
② 현재 페이지번호를 파악 후(KeyIndicator 또는 문서에 따라 XHwpDocuments.Active_XHwpDocument.XHwpDocumentInfo.CurrentPage나 CurrentPrintPage)
③ Goto 액션으로 현재 페이지번호로 이동한다.
④ 처음에 저장한 위치와 현재 캐럿위치가 일치하면 True, 일치하지 않으면 False를 리턴하게 한다.
⑤ 처음에 저장한 위치로 돌아가기(SetPos)
웹한글기안기는 아니지만ㅜ
파이썬의 오토메이션API 기준으로 코드를 보여드려보면,
def is_pagestart():
init_pos = hwp.GetPos() # ①
cur_page = hwp.XHwpDocuments.Active_XHwpDocument.XHwpDocumentInfo.CurrentPrintPage # ②
pset = hwp.HParameterSet.HGotoE # ③
hwp.HAction.GetDefault("Goto", pset.HSet)
pset.HSet.SetItem("DialogResult", cur_page)
pset.SetSelectionIndex = 1
hwp.HAction.Execute("Goto", pset.HSet)
try: # ④
if hwp.GetPos() == init_pos:
return True
else:
return False
finally: # ⑤
hwp.SetPos(*init_pos)
도움이 되었으면 좋겠습니다.
문서 자동 생성중에 페이지가 바뀌면 머리글을 다르게 해줘야 하는 경우가 있어서 여쭤봤습니다.
breaksection을 해야하는 타이밍을 잡기가 애매하더군요
안녕하세요.
“MovePageBegin” 액션을 실행하면 페이지 시작으로 이동이 가능합니다.
이동 후 GetPos() 함수로 위치를 얻어와서 비교를 하면 될것 같습니다.
var pos1 = HwpCtrl.GetPos();
HwpCtrl.Run("MovePageBegin");
var pos2 = HwpCtrl.GetPos();
if (pos1.list == pos2.list && pos1.para == pos2.para && pos1.pos == pos2.pos) {
// 페이지 시작위치인 경우
} else {
// 시작 위치가 아닌 경우
HwpCtrl.SetPos(pos1.list, pos1.para, pos1.pos); // 위치 복구
}
아닛, 이렇게 간단한 방법이 있었군요!ㅋ