현재 문서에서의 정보 KeyIndicator()

KeyIndicator()
(True, 1, 1, 2, 1, 1, 2, 0, ‘문단 나눔’)
[0]: 성공/실패 : True/False
[1]: 총구역
[2]: 현재구역
[3]: 페이지
[4]: 단
[5]: 줄
[6]: 칸
[7]: 수정/삽입 : 1/0

위 내용처럼 KeyIndicator() 을 사용하면, 문서의 정보를 구할 수 있습니다.
문서의 전체 페이지 수를 구하려고, 문서의 제일 마지막 페이지로 이동 한 뒤
현재 페이지(인덱스번호 3)을 구했었습니다.
그런데, 미주 등의 추가로 인하여 전체 페이지를 구하려고 하면 어떻게 하면 좋을까요…?

아이디어는 가장 마지막 미주의 내부로 진입하면 되는데…
혹시 다른 방법, 아이디어가 있을까요…?

ps. 미리 감사드립니다.^^

이 범주에서는 한글 오토메이션에 대한 다른 사용자의 기술 지원을 제공받을 수 있습니다.

  1. 한글 오토메이션의 API 사용/연동은 개발 가이드를 참조하세요.
  2. 일반 문의는 한글과컴퓨터 웹사이트의 고객 지원을 이용하세요.
  3. 개인정보가 포함되지 않도록 유의하세요. 게시글 또는 댓글에 개인정보가 포함된 내용이 있을 경우 게시물이 숨김처리 될 수 있습니다.
1개의 좋아요

안녕하세요. 한컴디벨로퍼입니다.

현재 담당자가 내용을 확인하고 있습니다. 조금만 기다려 주세요.

한컴디벨로퍼를 이용해 주셔서 감사합니다.

안녕하세요 ^^
KeyIndicator API 만 사용하셔서는 원하시는 대로 페이지 구하기는 어려울것 같습니다 .

미주 내부 진입은 아이디어를 조금 드릴수있을것 같습니다.
찾기를 통해서 스타일을 찾을수 있는데 각주/미주 스타일을 찾아서 가면 내부진입은 가능할것 같습니다 ^^

	HAction.GetDefault("RepeatFind", HParameterSet.HFindReplace.HSet);
	with (HParameterSet.HFindReplace)
	{
		ReplaceString = "";
		FindString = "";
		IgnoreReplaceString = 0;
		IgnoreFindString = 0;
		Direction = FindDir("Backward");
		WholeWordOnly = 0;
		UseWildCards = 0;
		SeveralWords = 0;
		AllWordForms = 0;
		MatchCase = 0;
		ReplaceMode = 0;
		ReplaceStyle = "";
		FindStyle = "각주";
		FindRegExp = 0;
		FindJaso = 0;
		HanjaFromHangul = 0;
		IgnoreMessage = 1;
		FindType = 1;
	}
	HAction.Execute("RepeatFind", HParameterSet.HFindReplace.HSet);

감사합니다 ^^

간단히 hwp.PageCount로 전체 쪽수를 구하실 수 있습니다.
미주가 한 페이지를 넘겼더라도 PageCount로 카운트됩니다.

마지막 미주의 내부로 진입하는 코드는 아래와 같이 ctrl을 사용하시는 것을 추천드립니다.

ctrl = hwp.LastCtrl
while ctrl:
    if ctrl.CtrlID == "atno":  # 다만, 각주와 미주를 구분하지 않음ㅜ
        hwp.SetPosBySet(ctrl.GetAnchorPos(0))
        break
    ctrl = ctrl.Prev

위 코드의 시연화면은 다음과 같습니다.
녹화_2023_11_28_00_53_31_25

도움이 되었기를 바랍니다.

<참고>
각주와 미주를 구분해서, 미주의 마지막 주석으로 이동하고 싶은 경우에는 아래와 같이 실행하시면 됩니다.

ctrl = hwp.LastCtrl
while ctrl:
    if ctrl.CtrlID == "en":
        hwp.SetPosBySet(ctrl.GetAnchorPos(0))
        hwp.Run("NoteModify")
        break
    ctrl = ctrl.Prev
1개의 좋아요