html - 如何在 Delphi 中将简单的 RichText 转换为 HTML 标签?

标签 html delphi rtf delphi-2006 richedit

你可能会说在 stackOverflow 中有很多关于这个的讨论,但其中大部分都比我需要的更复杂,而且主要是针对其他语言的。

我有一个 MySQL 远程数据库,其中有一个“帮助”表,其中包含用于填充使用该数据库的动态网站的帮助页面的代码。

为了提高速度和安全性,我决定制作一个 Delphi 应用程序来管理该网站,而不是通过网站本身来管理。

我想放置一个 TRichEdit 来制作帮助文本并使用简单的东西,例如对齐、粗体、斜体和下划线样式。我不想使用图片和字体。

如何选择丰富样式的文本并将其转换为 HTML 以放入我在远程数据库中的 BLOB 字段然后如果我想再次编辑它则重新转换为富文本强>?

最佳答案

如果您真的想使用 TRichEdit 生成 RTF 内容,那么您应该将它生成的 native RTF 与转换后的 HTML 一起存储。如果您使用 TRichEdit 的唯一原因是您可以拥有简单的格式化功能,那么您最好使用生成 native HTML 内容的 HTML 编辑控件。

无论采用哪种方式,最好存储原生格式供用户编辑内容,并根据需要将其转换为其他格式(而不是双向转换)。

如果您使用 TRichEdit,那么您可以轻松地将 RTF 内容流进和流出控件,尽管我建议使用 TJvRichEdit 而不是 TRichEdit :

procedure GetRTFData(MS: TMemoryStream; RTF: TRichEdit);
begin
  MS.Clear;
  RTF.Lines.SaveToStream(MS);
  MS.Position := 0;
end;

procedure SetRTFData(MS: TMemoryStream; RTF: TRichEdit);
begin
  MS.Position := 0;
  RTF.StreamFormat := sfRichText;
  RTF.Lines.LoadFromStream(MS);
end;

手动将 RTF 格式转换为 HTML 格式并非易事。有 unicode 字符注意事项、字体样式、字体代码、段落格式、编号列表、特殊 HTML 字符等等。即使您只需要支持简单的格式设置,用户也经常会使用其他导致转换麻烦的功能——例如从 MSWord 复制内容并使用各种格式和字体样式将其粘贴到您的应用中。

JvRichEditToHtml 在将 RTF 转换为 HTML 方面做得不错,但我们最终编写了自己的转换单元,因为我们使用 RTF 做的事情比简单格式化要多得多。 JvRichEditToHtml 应该可以轻松处理您所描述的内容,只要用户不通过复制/粘贴引入复杂的内容,或使用键盘快捷键来格式化内容(例如,bullets = ctrl+shft+ L、缩进=ctrl+M等)。

如果您想绕过在 RTF 中创作和转换为 HTML 的复杂性,Delphi 也有几个很好的 HTML 编辑控件:

Google Results :: Delphi, HTML, Editor, Component

Stack Overflow :: Delphi, HTML, Editor, Component

我们使用 TRichView 是因为它具有广泛的功能。它可以加载/创建 RTF,并导出 HTML。但是它不是免费的。如果您正在寻找免费的东西,TJvRichViewJvRichEditToHtml 是不错的选择。

关于html - 如何在 Delphi 中将简单的 RichText 转换为 HTML 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954946/

相关文章:

html - 从 RTF 到 HTML 转换丢失居中属性

ios - Objective-C - 如何从 NSAttributedString 创建 rtf

javascript - 解析美元金额的 HTML 源代码,然后将最高金额设置为 var

html - 列之间的边框 css

mysql - 如何修复带有 "group by"子句的查询中的 count()?

delphi - 使用 "mod"运算符

css - float 图像后,需要在div中居中

html - 使单元格宽度适合内容

delphi - 使用 WMI 获取附加信息

java - 在java中将HTML转换为RTF?