빈 페이지를 제거하는 방법

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

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

문서에서 빈 페이지(Text , 객체)를 삭제 하는 방법을 알고 싶습니다.

1개의 좋아요

안녕하세요.

작업 중인 문서에서 텍스트, 개체가 아무것도 없는 빈 페이지만 골라서 삭제하고자 하는 것인지요?
문의 사항을 조금 더 자세히 작성 부탁드립니다.

감사합니다.

1개의 좋아요

네 각 페이지를 기준으로 Text / 표 / 이미지 / 개체 등 빈 페이지 일 경우 해당 페이지를 삭제하는 기능입니다.

1개의 좋아요

GetPageText라는 메서드가 있었던 것 같은데요. 문서 끝에서부터 GoTo로 한 페이지씩 올라오면서 GetPageText로 텍스트를 조회하거나, 한 칸 움직였을 때 다른 페이지로 이동하는지 여부를 체크해서, 이에 해당하면 Delete를 실행하는 간단한 방식으로 코드를 짜시면 될 것 같습니다.

1개의 좋아요

안녕하세요.

ilco님의 GetPageText 메소드는 이미지나 개체를 제외해서 추출하여 빈 페이지 체크가 정확치 않아
MovePageBegin, MovePageEnd 액션과 GetPos 메소드를 이용했습니다.

(C++ 작성 예제)

void CMFCApplication3Dlg::OnBnClickedButton6()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	long pagecnt = m_app.get_PageCount();
	
	// 앞쪽이 지워질 때 쪽 번호가 변경될 수 있어서 뒤부터 체크
	for (int i = pagecnt; i > 0; i--) {
		// 찾아가기 - 쪽
		CDHwpAction gotoAct = m_app.CreateAction(_T("Goto"));
		CDHwpParameterSet set = gotoAct.CreateSet();
		gotoAct.GetDefault(set);
		set.SetItem(_T("SetSelectionIndex"), COleVariant((long)1));
		set.SetItem(_T("DialogResult"), COleVariant((long)i));
		gotoAct.Execute(set);
		
		// 빈 페이지 확인을 위해 페이지 시작 위치와 끝의 위치를 비교함
		long slist = 0, spara = 0, spos = 0;
		long elist = 0, epara = 0, epos = 0;

		m_app.Run(_T("MovePageEnd"));
		m_app.GetPos(&elist, &epara, &epos);
		m_app.Run(_T("MovePageBegin"));
		m_app.GetPos(&slist, &spara, &spos);
			
		if (slist == elist && spara == epara && spos == epos) {
			m_app.Run(_T("DeleteBack"));
			m_app.Run(_T("DeleteBack"));
		}
	}
}

안되는 사항이 있으면 문의 남겨주세요.
감사합니다.

2개의 좋아요