2011-04-12 141 views
6

有没有简单的方法从Rtf字符串中提取文本而不使用RichTextBox如何将rtf字符串转换为C#中的文本

例子:

{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset0 Segoe UI;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\lang2070\ltrch foo}\li0\ri0\sa0\sb0\fi0\ql\par} 
{\f2 {\lang2070\ltrch bar }\li0\ri0\sa0\sb0\fi0\ql\par} 
} 
} 

应该返回:

foo 
bar 
+1

你真的意味着“不使用RichTextBox的”还是你的意思,而“不CodeProject上的样本显示一个RichTextBox“?不使用RichTextBox的 – Heinzi 2011-04-12 11:44:58

+1

。这将在一个由报告服务器加载的dll上。如果它包含windows.forms – dcarneiro 2011-04-12 11:46:54

回答

2

有MSDN上的一个简单的文章,以达到你想要的东西:http://msdn.microsoft.com/en-us/library/cc488002.aspx

class ConvertFromRTF 
{ 
    static void Main() 
    { 

     string path = @"test.rtf"; 

     //Create the RichTextBox. (Requires a reference to System.Windows.Forms.dll.) 
     System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox(); 

     // Get the contents of the RTF file. Note that when it is 
     // stored in the string, it is encoded as UTF-16. 
     string s = System.IO.File.ReadAllText(path); 

     // Display the RTF text. 
     System.Windows.Forms.MessageBox.Show(s); 

     // Convert the RTF to plain text. 
     rtBox.Rtf = s; 
     string plainText = rtBox.Text; 

     // Display plain text output in MessageBox because console 
     // cannot display Greek letters. 
     System.Windows.Forms.MessageBox.Show(plainText); 

     // Output plain text to file, encoded as UTF-8. 
     System.IO.File.WriteAllText(@"output.txt", plainText); 
    } 
} 
+5

dll会返回一个错误我想避免引用System.Windows.Forms.dll – dcarneiro 2011-04-12 11:48:15

+0

这使用了一个RichTextBox,OP说他想避免。虽然我同意这样做的最佳方式是仅仅不显示RTB。 – SeeSharp 2011-04-12 11:48:34

相关问题