我使用Delphi XE5(仅限Windows平台)。我需要显示RTF文档并能够提取纯文本(用于搜索操作)。我创建了小型测试应用程序,它只有很少的组件:
RichEdit1: TRichEdit;
cxRichEdit1: TcxRichEdit;
WPRichText1: TWPRichText;
Button2: TButton;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
和这样的代码(将相同的RTF文件加载到TRichEdit / TcxRichEdit / TWPRichText并将纯文本提取到相应的备忘录):
RichEdit1.Lines.LoadFromFile('c:\d\1.rtf');
cxRichEdit1.Lines.LoadFromFile('c:\d\1.rtf');
WPRichText1.LoadFromFile('c:\d\1.rtf', True, 'RTF');
memo1.Text := RichEdit1.Text;
memo2.Text := cxRichEdit1.Text;
memo3.Text := WPRichText1.SaveToString('UNICODE');
我有这样的结果。
TRichEdit:
???????? <http://news.tut.by/politics/> ...
无法提取unicode字符(系统区域设置为挪威语),包含URL。
TcxRichEdit:
HYPERLINK "http://news.tut.by/politics/"ПОЛИТИКА ...
Unicode字符可以,但是将URL显示为纯文本的一部分。
TWPRichText:
ПОЛИТИКА
正确完成工作的唯一组件。但我想避免使用TWPRichText,因为它很重且很慢。有谁知道,是否有可能用标准的TRichEdit解决问题? 可以下载RTF样本here。