0
RTF 파일을 읽고 부분적으로 파일을 표시하는 컨트롤을 만들지 묻는 메시지가 나타납니다. 내가 겪고있는 문제는 폰트 스타일이 내가 빼내는 스 니펫보다 높은 레벨에 저장되어있는 것 같다. 한 파일에서 미리보기를 읽고 서식을 유지하는 방법이 있습니까? WPF에서 RichTextbox를 사용하고 있습니다.RTF 파일의 부분을 읽고 서식을 유지하는 방법
RTF 파일을 읽고 부분적으로 파일을 표시하는 컨트롤을 만들지 묻는 메시지가 나타납니다. 내가 겪고있는 문제는 폰트 스타일이 내가 빼내는 스 니펫보다 높은 레벨에 저장되어있는 것 같다. 한 파일에서 미리보기를 읽고 서식을 유지하는 방법이 있습니까? WPF에서 RichTextbox를 사용하고 있습니다.RTF 파일의 부분을 읽고 서식을 유지하는 방법
이것은 완벽한 솔루션은 아니지만 제 특정 시나리오에서 작동합니다. 나중에 다른 사람들을 돕기 위해 게시하고 있지만 더 나은 솔루션을 찾고 있습니다. 아래가 작동하려면 두 가지 전제 조건이 있습니다
코드 :
private static IEnumerable<String> GetListFromDelimitedText(String text)
{
var textSplit = text.Split(new[] { "~~~~~~~~" }, StringSplitOptions.None);
var header = GetHeaderOfRtf(textSplit);
var footer = GetFooterOfRtf(textSplit);
var listWithoutHeaderAndFooter =
textSplit.Where((text, index) => index > 0 && index < textSplit.Length - 1);
return GetSnippetsWithHeaderAndFooter(listWithoutHeaderAndFooter, header, footer);
}
private static IEnumerable<String> GetSnippetsWithHeaderAndFooter(IEnumerable<String> snippetList, String header, String footer)
{
return snippetList.Select(text =>
{
var textWithoutLeadingBracket = text.Substring(text.IndexOf('}') + 1);
var cleanedText = textWithoutLeadingBracket.Substring(0, textWithoutLeadingBracket.LastIndexOf('{'));
return header + cleanedText + footer;
}
);
}
private static string GetFooterOfRtf(IEnumerable<String> textSplit)
{
var lastSplit = textSplit.Last();
return lastSplit.Substring(lastSplit.IndexOf('}') + 1);
}
private static string GetHeaderOfRtf(IEnumerable<String> textSplit)
{
var firstSplit = textSplit.First();
return firstSplit.Substring(0, firstSplit.LastIndexOf('{'));
}