2017-03-23 38 views
1

RTFHTMLに変換したいとします。しかし、TextRange.Load機能でエラーが発生します。 、データ形式が「リッチテキスト形式」で認識できない構造

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0Arial;}}\viewkind4\uc1\pard\fs20 Hallo\par 
\par 
Wir bitten um Auftragsbest\''e4tigung und Liefertermin\fs20\par 
} 

RTF文字列は私に通常になります

private static string ConvertRtfToXaml(string rtfText) 
    { 
     var richTextBox = new System.Windows.Controls.RichTextBox(); 
     if (string.IsNullOrEmpty(rtfText)) return ""; 

     var textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); 

     //Create a MemoryStream of the Rtf content 

     using (var rtfMemoryStream = new MemoryStream()) 
     { 
      using (var rtfStreamWriter = new StreamWriter(rtfMemoryStream)) 
      { 
       rtfStreamWriter.Write(rtfText); 
       rtfStreamWriter.Flush(); 
       rtfMemoryStream.Seek(0, SeekOrigin.Begin); 

       //Load the MemoryStream into TextRange ranging from start to end of RichTextBox. 
       textRange.Load(rtfMemoryStream, System.Windows.Forms.DataFormats.Rtf); 
      } 
     } 

     using (var rtfMemoryStream = new MemoryStream()) 
     { 

      textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); 
      textRange.Save(rtfMemoryStream, System.Windows.DataFormats.Xaml); 
      rtfMemoryStream.Seek(0, SeekOrigin.Begin); 
      using (var rtfStreamReader = new StreamReader(rtfMemoryStream)) 
      { 
       return rtfStreamReader.ReadToEnd(); 
      } 
     } 

    } 

機能textRange.Load(rtfMemoryStream, System.Windows.Forms.DataFormats.Rtf);次のエラーがスローされます:

Unrecognized structure in data format 'Rich Text Format'. Parameter name: stream

マイRTF文字列は次のようになります私は、次のコードを持っていますパラメータストリームはどこですか?

答えて

0

RTFは無効です。\''e4が含まれています。ここにはアポストロフィが2つあります。

RTF Special Characters

\'hh A hexadecimal value, based on the specified character set (may be used to identify 8-bit values).

0

あなたは間違ってエスケープ/エスケープ解除があります。アセンブリPresentationCoreで定義されてSystem.Windows.DataFormats.Rtf

textRange.Load(rtfMemoryStream, System.Windows.DataFormats.Rtf); 

\' 

そしてTextRange.Loadがあるべきと

\'' 

が変更に。

関連する問題