테이블 셀에 이미지 존재여부 체크 관련 문의2

안녕하세요

이전에 테이블에 이미지가 존재하는지 체크하는 방법에 대하여 아래와 같이 문의 하였습니다.

위 문의는 테이블 셀에 이미지가 없는데 있다고 인식하여 문의한 케이스이고
이번에는 반대로 테이블 셀에 이미지가 있는데 없다고 인식하여 아래와 같이 문의드립니다.


첨부한 한글 파일을 아래 로직으로 체크 시 콘솔로그 “C” 값이 위치한 곳으로 가지않고 있습니다.
이미지(테이블 셀 "approval2"에 위치한 이미지)를 백그라운드 이미지로 넣지 않고 일반적으로 삽입한 형태이며,
정상적으로 이미지가 존재한다고 인식할 수 있도록 로직을 개선하고 싶은데 추가해야할 조건이 있다면 확인 부탁드립니다.

19973 (1).hwp (76 KB)

var act;
var set;
var subset;
var result = false ;
var targetFiledName;
var fieldName = 'approval2';
     
		for(var inx = 10 ; inx >= 0; inx--) {
			targetFiledName = fieldName+"{{"+inx+"}}" ;
			if(!HwpCtrl.FieldExist(targetFiledName)  ) continue; 
			HwpCtrl.MoveToField(targetFiledName, true, true, true);
			act =HwpCtrl.CreateAction("CellBorderFill");
			set = act.CreateSet();
			act.GetDefault(set);
			
            		console.log("start");
			if (set.ItemExist("FillAttr")) {
				console.log("A");
				subset = set.Item("FillAttr");
				if(subset.ItemExist("Type")) {
						console.log("B");
						if((subset.Item("Type") & 2) == 2) {
							console.log("C");
							result = true ;
							break;
						} else {
							console.log("D");
							result  = false ;
						}
				}
				console.log("E");
			} else {
				console.log("F");
				result = false ;
			}
		}
		
        console.log("end")
		return result ;

안녕하세요.
기존 코드에 이미지가 존재하는지 체크하는 코드를 추가 하였습니다.
CtrID 가 “gso” 일때 “ShapeDrawImageAttr” 가 있는지 검사하면 될것 같습니다.

var act;
var set;
var subset;
var result = false ;
var targetFiledName;
var fieldName = 'approval2';
     
		for(var inx = 10 ; inx >= 0; inx--) {
			targetFiledName = fieldName+"{{"+inx+"}}" ;
			if(!HwpCtrl.FieldExist(targetFiledName)  ) continue; 
			HwpCtrl.MoveToField(targetFiledName, true, true, true);
			act =HwpCtrl.CreateAction("CellBorderFill");
			set = act.CreateSet();
			act.GetDefault(set);
			
            		console.log("start");
			if (set.ItemExist("FillAttr")) {
				console.log("A");
				subset = set.Item("FillAttr");
				if(subset.ItemExist("Type")) {
						console.log("B");
						if((subset.Item("Type") & 2) == 2) {
							console.log("C");
							result = true ;
							break;
						} else {
							console.log("D");
							result  = false ;
						}
				}
        else if (result == false) {
        HwpCtrl.Run("SelectCtrlFront");
        var ctrl = HwpCtrl.CurSelectedCtrl;
        if(ctrl && ctrl.CtrlID == "gso") {
          var set = ctrl.Properties;
          if (set.ItemExist("ShapeDrawImageAttr")) {
            console.log("img found");
            result = true;
            break;
          } else {
            result = false;
            break;
            console.log("img not found");
          }
        }
      	result = false;
      }
		} else {
				console.log("F");
				result = false ;
			}
		}
		
        console.log("end");

추가로, 다른 방식으로도 검사가 가능하여 샘플 코드 추가 합니다.

function IsPictureExist(cellName) 
{
  var targetFiledName;
  var cellName = 'approval3';
	var result = false; 
	
	// 서명이미지가 있는 셀로 이동 
	HwpCtrl.MoveToFieldEx(cellName,true,true,false);

	// 현재 셀의 커서의 Pos 정보를 가져와서 listID 처리 
	var cellPos = HwpCtrl.GetPos();
	var cellList = cellPos.list;
	
	// 문서내 개체 컨트롤을 확인하기해 HeadCtrl 가져오기 
	var pctrl = HwpCtrl.HeadCtrl;

	// Next로 연결된 개체 컨트롤을 쭉 검사 
	while (pctrl != null) { 
		
		// 컨트롤이 그리기 개체인 경우 
		if (pctrl.CtrlID == 'gso')
		{
			// 컨트롤의 조판(앵커)위치를 가져옵니다. 
			var ctrlPos = pctrl.GetAnchorPos();
			
			// 잘가져왔는지 체크합니다. 
			if (ctrlPos.IsSet){	
			
				// 리스트를 가져옵니다. 
				var ctrlList = ctrlPos.Item("List");
        console.log("ctrlList");
				
				// 두 리스트아이디가 일치하면, 셀안에 이미지가 있는것으로 판단합니다. 
				if (ctrlList == cellList)
				{
          // 이미지 존재!
					result = true;
					break;
				}
			}
		}	
		pctrl = pctrl.Next;
	}	
  console.log("end");
  console.log("result : " + result);
}