한글기안기에서 특정 문자로 바로 이동 하는 방법

한글기안기 관련 문의 사항이 있어 요청합니다.

특정 매뉴얼인 한글 파일을 파싱(Parsing)하는 프로그램을 만들었습니다.

특정매뉴얼은 목차 정보가 있고 목차 정보와 동일한 텍스트로 상세 내역에 대분류로 만들어져 있습니다.

예로
Ⅰ. 일반사항

  1. 목적
  2. 적용범위

문의사항은 해당 목차 정보의 텍스트를 클릭 시 한글파일에 있는 상세 내역으로 바로 이동하는 기능을 개발하고 싶습니다. 현재 HwpCtrl.CreateAction(‘RepeatFind’)이란 찾기 기능으로 개발을 하였으나 해당 텍스트가 있는 모든 곳으로 이동을 합니다. 상세내역의 대분류로만 이동하고 싶은데 가능한가요??

기능 개발한 소스는

    var act = HwpCtrl.CreateAction('RepeatFind');
    var set = act.CreateSet();
    
    act.GetDefault(set);
    
    set.SetItem("FindString", "목적");//찾을 문자열
    set.SetItem("Direction" , 2); // 찾을 방향 (0: 앞, 1: 뒤, 2: 전체)

    var vRes = act.Execute(set);
    
    if (vRes == false){      //검색이 끝났을때
        //HwpCtrl.MovePos(2);
        return false;
    } else {
        //console에 위치 값 찍기
        //console.log(HwpCtrl.GetPos());
        
        var varGetPos = HwpCtrl.GetPos();
        var varList = varGetPos.list;
        var varPara = varGetPos.para;
        var varPos  = varGetPos.pos;
        
        if(varGlobalList == varList && varGlobalPara == varPara && varGlobalPos == varPos) {
            varGlobalList = "";
            varGlobalPara = "";
            varGlobalPos  = "";
            
        	return false;
        } else {
            if(varGlobalList != varList) {
                varGlobalList = varList;
            }
            if(varGlobalPara != varPara) {
                varGlobalPara = varPara;
            }
            if(varGlobalPos  != varPos ) {
                varGlobalPos = varPos;
            }
            
        	var set = HwpCtrl.CreateSet("ListParaPos");
                set.SetItem("List", varList);
                set.SetItem("Para", varPara);
                set.SetItem("Pos" , varPos );
            
            HwpCtrl.MovePos(1, varPara, varPos);
            
            return true;
        }
    }

안녕하세요 ^^
간단하게 의견한번 드려보겠습니다.

처음 목차를 파싱한다고 하셨는데 목차를 파싱할때 텍스트를 얻어오고 해당 목차의 텍스트의 GetPos 정보를 따로 저장하고 있으면 어떨까요?

Find했을때 해당 Pos인경우 목차라고 인식을 하고 넘기고 가지고 있는 목차의 Pos가 아닌경우 해당 위치로 이동해주면 어떨까요?

도움이 되면 좋을것 같습니다 :slight_smile: 감사합니다.

1개의 좋아요