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

**URL:** <https://forum.developer.hancom.com/t/topic/1534>\
**Category:** 웹한글 기안기\
**Created:** [5월 23, 2024, 2:47오전 UTC](https://forum.developer.hancom.com/t/topic/1534 "2024-05-23T02:47:54Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gnlals02](https://avatars.discourse-cdn.com/v4/letter/g/a183cd/32.png) [@gnlals02](https://forum.developer.hancom.com/u/gnlals02)\
**Post date:** [5월 23, 2024, 2:47오전 UTC](https://forum.developer.hancom.com/t/topic/1534/1 "2024-05-23T02:47:54Z")

</div>

안녕하세요

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

> [@백그라운드 이미지 존재 여부 체크 관련 문의](https://forum.developer.hancom.com/t/topic/1468):
>
> 안녕하세요 웹한글기안기 API PDF(설명서)에 있는 예시 참고하여 테이블 셀에 백그라운드 이미지가 존재하는지 체크하고 있습니다. 테이블 셀에 육안상으로는 이미지가 존재하지 않는데 존재한다고 체크하고있습니다. 해당 부분을 정확하게 체크하려면 어떤 조건을 더 추가해줘야하는지 문의드립니다. var act; var set; var subset; var result = false ; var targetFiledName; var fieldName = 'approval3'; for(var inx = 10 ; inx \>= 0; inx--) { targetFiledName = fieldName+"{{"+inx+"}}" ; if(!HwpCtrl.FieldExist(targetFiledName) ) continue; HwpCtrl.MoveToField(targetFiledName, true, true, true); act …

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

* * *

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

[19973 (1).hwp](https://forum.developer.hancom.com/uploads/short-url/d3U6KdTfnmDTWwLiD8lAoXdhht0.hwp) (76 KB)

```auto
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 ;

```

 ![스크린샷 2024-05-23 오후 12.01.39](https://us1.discourse-cdn.com/flex016/uploads/hancom_dev_forum/original/1X/4e10c7a7b7c35fba9ffcbc4aefc245c841a36bfd.png)

---

<div class="post-metadata">

**Author:** ![cgkang](https://avatars.discourse-cdn.com/v4/letter/c/bc79bd/32.png) [@cgkang](https://forum.developer.hancom.com/u/cgkang)\
**Post date:** [5월 24, 2024, 5:56오전 UTC](https://forum.developer.hancom.com/t/topic/1534/2 "2024-05-24T05:56:51Z")

</div>

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

```auto
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");

```

---

<div class="post-metadata">

**Author:** ![cgkang](https://avatars.discourse-cdn.com/v4/letter/c/bc79bd/32.png) [@cgkang](https://forum.developer.hancom.com/u/cgkang)\
**Post date:** [5월 24, 2024, 5:59오전 UTC](https://forum.developer.hancom.com/t/topic/1534/3 "2024-05-24T05:59:03Z")

</div>

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

```auto
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);
}

```
