Hwpctrl 문의드립니다.

안녕하세요~
Hwpctrl api기능에 대해 문의드립니다.

한글문서내용을 텍스트로 변환하는 작업중입니다.
대부분 hwp.GetFieldText 명령어로 정상처리되는데
글상자(테이블)안에 있는 내용은 읽을수가 없더군요…
그래서 골라붙이기 기능을 이용해서 글상자를 지우고 텍스트만 남기려고
아래과정을 거치려고 합니다…

hwp.InitScan()
hwp.Run("SelectAll") -> 글상자 전체 선택
hwp.Run("Copy") -> 복사
hwp.Run("Erase") -> 지우기
hwp.Run("PasteSpecial") -> 골라 붙이기
                .....
hwp.GetFieldText()

마지막에 문제가 발생하네요..
골라붙이기 다음에 대화상자가 표시되어 "텍스트문서" 를 수동으로 선택해야 정상처리 됩니다.
한글문서를 텍스트로 변환해서 사용할때마다 1개문서내에 50여개의 글상자가 있는데
50번의 대화상자가 떠서 수동으로 선택할수는 없구요..한글문서도 1개가 아닌지라..

골라붙이기 대화상자에 나오는 "텍스트문서" 선택옵션에 대한
매크로 코드를 얻으려고 한글문서에서 매크로정의 실행후 골라붙이기를 시도해봤지만
골라붙이기(ctrl + alt+ v)는 잠겨있어 실행이 안되네요.

---> 골라붙이기 대화상자에 나오는 "텍스트문서" 선택옵션을 수동으로 선택하지 않고
         자동설정하는 명령어 코드를 알고 싶습니다.

         위 명령어가 없다면..글상자안의 내용을 읽을수 있는 다른 방법이 있는지요..

감사합니다.

안녕하세요!

dev님께서 원하시는 최종 결과물이 어떤건지 정확히 알 순 없지만 “한글 문서 전체를 텍스트로 변환” 이라고 생각하고 안내 드릴게요

  1. GetTextFile
    현재 열린 문서를 리턴값으로 문자열을 반환해줍니다.

  2. SaveAS
    매개변수로 format에 "TEXT"로 지정하시면 텍스트 파일로 저장됩니다.

더 궁금하신 사항이 있으시면 언제든지 문의주세요!!

답변 감사드립니다.
제가 문의내용을 상세하게 적지않아서 죄송하네요~
문서 전체를 한꺼번에 변환하는게 아니고
문서전체를 변환하지만
hwp.GetFieldText() 를 사용해서 지정된 영역을 읽어가는 방법입니다.
지정된 순서대로 읽어서 DB화 해야하므로
hwp.GetFieldText(i) 를 사용해서
첨자를 사용한 반복읽기로 처리하고 있습니다.
감사합니다.

안녕하세요 dev님,

GetFieldText의 경우 지정한 필드에서 텍스트를 가져오는 api입니다.

필드의 경우 누름틀, 표의 셀에 각자 지정이 가능합니다.

셀의 경우 셀을 선택한후 표/셀속성 > 셀 > 필드 > 필드 이름을 보면 확인이 가능합니다.

셀에 “셀1” 이라는 필드 이름을 지정한후

GetFieldText(“셀1”)이라고 호출시 "셀1"이라는 이름이 지정된 셀의 내용을 가져오게 되는것입니다.

원하시는 내용을 가져오시지 못한다면 표안의 셀에서 이름이 정확히 지정되어있는지 확인이 필요해보입니다.

감사합니다 ^^

아래 링크의 [HwpCtrl API.pdf] 확인시 자세한 api 확인가능합니다.

지적하신 내용이 제가 사용하는 방식입니다.
셀이름은 정확히 지정이 되어 있구요.
셀안의 내용이 일반적인 텍스트와 글상자안에 있는 텍스트가 함께 존재합니다.

말씀하신 GetFieldText(“셀1”)로 읽으면…
일반적인 텍스트만 읽고 글상자안에 있는 텍스트를 읽지 못하는 경우입니다.
글상자 안의 텍스트를 못읽어서…검색해보니

hwp.Run(“SelectAll”) → 글상자 전체 선택
hwp.Run(“Copy”) → 복사
hwp.Run(“Erase”) → 지우기
hwp.Run(“PasteSpecial”) → 골라 붙이기

이 방법을 사용한게 있더군요…
근데 골라붙이기 이후 매번 대화상자가 표시되어 "텍스트문서"를 선택해줘야 한다는 거죠…
이방식으로 하니까 글상자 안의 텍스트도 읽을수 있는데…
문제는 대화상자가 매번 뜨게 되니까…ㅠㅠ
이거땜에 문의드린 겁니다.

image

한컴api 매뉴얼을 봐도 위 골라붙이기 이후 대화상자에 대한 언급이 없고…
한글문서에서 매크로를 생성해보려고 해도 골라붙이기는 잠겨있어
매크로코드 생성이 안됩니다.

  1. 대화상자가 안뜨게 하는 방법("텍스트문서"가 옵션으로 자동지정되어야 겠죠…)
  2. 이 방법 말고 다른 방법이 있는지…
    도와주시면 감사하겠습니다…꾸벅

안녕하세요 ^^

올려주신 내용보고 아래와 같이 해보면 어떨까 싶습니다.

저희 api 문서를 보면 GetTextFile, SetTextFile이라는 api가 있습니다.

GetTextFile은 현재 열린 문서를 문자열로 넘겨 줍니다.
해당 api에는 옵션값이 있는데 “saveblock” 옵션을 주면 현재 선택된 블록만 저장 하게됩니다.

그리고 이렇게 받은 텍스트를 SetTextFile을 통해서 문서에 삽입도 가능합니다.

  1. hwp.Run(“SelectAll”);
  2. var text = hwp.GetTextFile(“TEXT”, “saveblock”);
  3. hwp.SetTextFile(text, “TEXT”, “insertfile”); // “insertfile” 옵션을 주면 현재커서 이후에 지정된 파일을 삽입합니다.

이러한 방식으로 GetTextFile을 통해 원하시는 텍스트를 추출 가능하시지 않을까요?

4개의 좋아요

다른일로 이제야 테스트 해봤습니다~
bhjung님이 제시하신 방법으로 해결이 되었습니다.
도움주심에 감사드립니다.꾸벅~~

사실 GetTextFile 명령어도 api매뉴얼에서 보긴했지만
문서전체를 텍스트로 변환하는걸로 알고 관심을 두지 않았네요.
뒤에 옵션 saveblock…이게 중요한건데 못본겁니다…
SetTextFile(text, “TEXT”, “insertfile”); 이 부분은 사용하지 않았습니다.
var text = hwp.GetTextFile(“TEXT”, “saveblock”);
여기서 text를 찍어보니 saveblock내 글상자 내용이 그대로 들어와서
text를 바로 사용했습니다…

다시한번 bhjung님께 감사드립니다~

3개의 좋아요