우리는 RTF 문서의 내용을 일반 텍스트로 가져와야합니다.rtf에서 머리글과 바닥 글을 포함한 텍스트로
우리는 그것을 위해 RFTEditorKit을 사용하고 있지만, 우리는 \ headerf 또는 다른 헤더 필드를 포함 처리 할 필요가있는 RTF 문서의 많은, 그리고 RTFEditorKit이 (자동으로 무시) 구문 분석 나던.
일반 텍스트로 구문 분석 된이 문서를 가져 오는 또 다른 간단한 솔루션이 있습니까?
우리는 RTF 문서의 내용을 일반 텍스트로 가져와야합니다.rtf에서 머리글과 바닥 글을 포함한 텍스트로
우리는 그것을 위해 RFTEditorKit을 사용하고 있지만, 우리는 \ headerf 또는 다른 헤더 필드를 포함 처리 할 필요가있는 RTF 문서의 많은, 그리고 RTFEditorKit이 (자동으로 무시) 구문 분석 나던.
일반 텍스트로 구문 분석 된이 문서를 가져 오는 또 다른 간단한 솔루션이 있습니까?
RTF 형식은 매우 간단합니다. 자신의 파서를 작성하는 데 시간이 오래 걸리지 않아야합니다. 그렇지 않으면 JDK에서 소스 코드를 복사하고 누락 된 요소에 대한 지원을 추가하면됩니다 (경험으로 인해 복사하기 때문에 JDK의 많은 유용한 클래스를 확장 할 수 없습니다).
[편집] 유지 보수가 악몽에 들지 않도록하려면 원본을 VCS의 고유 한 프로젝트에 복사하십시오. 이에 따라 버전에 태그를 붙이십시오 (Java의 다음 릴리스가 나오면 쉽게 풀 수 있습니다).
그런 다음 첫 번째 프로젝트에 의존하는 두 번째 프로젝트를 만듭니다. 첫 번째 프로젝트를 시작하고 원래 클래스를 확장하는 데 필요한 모든 작은 변화를 만듭니다. 이 변경 사항을 작게 유지하십시오. 예를 들어 메소드 및 필드를 public/protected로 설정하고 final을 제거합니다. 이렇게하면 변경 사항을 추적하는 것이 간단합니다 (선을 추가/제거하지 않으므로).
다음 버전으로 병합하는 것은 쉽습니다. 모든 무거운 짐을 싣는 작업은 반드시 자신의 프로젝트에서 수행해야합니다.
이것은 솔루션의 일부일 수 있습니다 : 일반 텍스트의 길이를 검색하는 (C++) 메소드. 카운터를 증가시키는 대신 문자를 다른 문자열로 복사 할 수 있습니다.
짧은 번역 : klammern =이
int Global::GetRtfPlainLength(const CString str)
{
int klammern = 0;
bool command = false;
int length = 0;
int i = 0;
//TRACE("\n%s\n",str);
while(i < str.GetLength())
{
switch(str[i])
{
case '{':
klammern++;
break;
case '}':
klammern--;
break;
case '\\':
if(!command) // only relevant outside command
{
switch(str[i + 1])
{
case '\'': // special chars: \'XX -> count only 1
i += 3;
length++;
break;
case '{': // escaped parenthesis
case '}':
length++;
i++;
break;
default: // begin of a command
command = true;
i++;
break;
} // switch
}
break;
case ' ':
if(klammern == 1) // inside parenthesis a space is part of the command
{
if(command)
command = false;
else
length++;
}
break;
case 10:
case 13:
break;
default:
if(!command)
length++;
break;
} // switch
i++;
} // while
// some corrections
length += FindCount(str,"\\line ") * 2;
length += FindCount(str,"\\par ") * 2;
return length;
}
HTH 조금 괄호.
복사 및 붙여 넣기를 수행하려면 거의 모든 javax.swing.text.rtf 패키지를 c & p해야합니다.이 패키지는 다시 돌아와 유지 관리 문제가되는 경향이 있습니다. – pvgoddijn