GetText로 내용검색시 반환값의 의미와 법조문 검색이 안되는 이유가 궁금합니다

안녕하세요
C#으로 한글파일에서 검색하는 코드를 만들고 있는데요

지금까지 만든 코드입니다
객체생성 > open > initscan > gettext로 검사가 전부입니다

var hwp = Activator.CreateInstance(Type.GetTypeFromProgID(“HWPFrame.HwpObject”));
hwp.Open(filePath, ext, null);
hwp.InitScan(“”, 0x0077, 0, 0, -1, -1);
while (true){
string text = “”;
int ret;
ret = hwp.GetText(out text);
if (ret == 0) //마지막줄이면 끝냄
{
break;
}
else
{
Debug.WriteLine(text);
}
}

궁금한점이 두가지 있습니다
-첫번째는 매뉴얼에 GetText의 반환값에서 0은 텍스트 정보 없음 / 1은 리스트의 끝이라고 되어 있는데요
한글파일 처음부터 마지막까지, 모든 내용을 검색하고 있는데 0으로 해야 되나요, 1로 해야 되나요?
0과 1의 의미 차이가 궁금합니다.
-두번째는 법조문 형식으로 된 한글파일이 검색되지 않는다는 것입니다.

법규정

이러한 법조문을 한글파일로 받아서 검색하면 gettext를 하여도 내용을 가져오지 못합니다…

도움 부탁드립니다 감사합니다!!

1개의 좋아요

안녕하세요 ,

  1. 리턴값은 아래와 같습니다.
    0 = 텍스트 정보 없음.
    1 = 리스트의 끝.
    2 = 일반 텍스트.
    3 = 다음 문단.
    4 = 제어문자 내부로 들어감.
    5 = 제어 문자를 빠져 나옴.
    101 = 초기화 안됨. (InitScan() 실패 또는 InitScan()를 실행하지 않
    음)
    102 = 텍스트 변환 실패

보면 법제처에서 받는 hwp의 경우 hwp가 아닙니다 … hml 파일로 저장이 되는대요. 저희 엔진이 아닌 다른 방식으로 hml을 만드는것 같습니다. 해서 오류가 발생하는것 같은대요
해당 파일을 열어 hwp 또는 hwpx로 저장후 테스트해보시길 바랍니다.
감사합니다 ^^

1개의 좋아요

<GetText()[0]의 0과 1 차이에 대해>

일반적인 GetText 탐색의 경우 문서 끝에 도착하면 상태값 1을 리턴합니다.

상태값 0은 (일종의 오류? 느낌으로) 조금 특수한 경우에 발생하는데,
예를 들어 while문으로 GetText 탐색 중
특정 단어를 찾아 수정하다 문단수가 바뀌는 경우 등에
다음 차례 GetText()의 상태값으로 0을 리턴하게 됩니다.

while문의 종료조건으로 상태값==1만 입력한 경우 무한루프가 발생하게 돼요ㅜ

이밖에도 상태값 0을 리턴하는 몇 가지 경우가 있었던 것 같은데,
예를 들면 hml파일에서 GetText를 돌리면 문서 끝에서 0을 리턴하기도 합니다.

지금은 괜히 겁나서 매번 while state <= 1: 식으로 코딩을 하게 되네요ㅋ

도움이 되었길 바랍니다.
행복한 하루 되세요^^

1개의 좋아요

법제처 국가정보법령센터는 저도 종종 사용했던 사이트인데요.
(다른 프로그래밍언어라서 그런지 모르겠지만)
파이썬에서는 확장자나 포맷(hml) 관련해서도
한 번도 문제가 된 적이 없었습니다.

방금도 다시 시도해보고, 잘 되는 것을 확인했습니다.

녹화_2023_11_29_20_53_24_623

다만 hml파일의 포매팅 태그 부분도 문단으로 간주하는지 빈 문단 몇 개가 더 나오기는 합니다ㅜ
그리고, hml 포맷의 문서를 GetText로 스캔할 때 문서 끝에서 상태값으로 0을 리턴하네요! 참고해 주시기 바랍니다.

행복한 하루 되세요!ㅎ

1개의 좋아요