Delphi:将rtf转换为文本的最佳方法

8
我需要将rtf转换为纯文本。我曾经编写过一个函数来去除rtf头,但它并不完美。
因此,一种选择是在运行时创建TRichEdit(类似于这里所描述的),但是否还有其他方法?是否有rtl函数或更好的方法?
更新:
这个问题中,我写了最终版本的rtf转文本过程。

TRichEdit出了什么问题?以及谁生成了你想要转换的RTF文件?如果希望转换从Microsoft Word生成的RTF文件,那么源自Microsoft的TRichEdit可能是最佳选择。 - Cosmin Prund
2
@Cosmin Prund:创建一个GUI控件(即使它从未在屏幕上显示)来在后台进行文件转换可能看起来有点过度,但当然,它是有效的。 - Andreas Rejbrand
1
确实,这是我的担心。肯定能行。不管怎样,似乎这就是方法。 - UnDiUdin
2个回答

4
如果您真的想找到一种进行此转换的方法,您应该查看类TRichEditStrings中实现类TConversion的方式。这些类在ComCtrls.pas中。通过了解RichEdit控件内部如何进行转换,您可能能够编写自己的代码。
然而,考虑到实现这一点的实际方面以及不知道您的问题对性能的要求是什么,我建议您采用您链接中概述的TRichEdit转换方法。

8
TRichEditStrings不实现任何转换,所有工作都由RichEdit控件完成(TRichEdit只是Microsoft RichEdit控件的一个包装器)。编写自己的RTF到TEXT实现对于简单情况来说很简单,对于复杂情况来说非常复杂。Microsoft Word可以将任何文档保存为RTF,并保留所有格式。想想你见过的最奇怪的Word文档,使用最扭曲的表格结构;想象一下有人将其保存为RTF并要求您将其转换为TEXT! - Cosmin Prund
好的,我会去做。有两个问题需要用其他方式解决:我需要在数据库的rtf字段中进行搜索(为此,我使用的技巧是在rtf文本中搜索字符串,这不是完美的技巧,但通常适用于搜索单词),我需要在网格中“作为文本”返回许多rtf字段的内容(这里的解决方法是返回rtf格式的文本)。当然,另一种选择是保存一个文本字段,因此对于我保存的每个rtf,我也保存了纯文本版本,这可能是一个新应用程序的好方法。 - UnDiUdin

0

页面

  • http://www.delphipraxis.net/152766-rtf-nach-html.html提供了一些指向RTF转换器的组件、库和其他资源的指针,其中一些包括RTF到文本转换选项。

  • ScroogeXHTML是一个用于将RTF转换为HTML / XHTML的库,可能会很有用。它支持RTF标准的子集,并且易于定制。它具有纯文本导出格式选项。注意:我是Delphi / Java平台上的ScroogeXHTML的作者。这是一个商业产品。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接