你可能会说在 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
- HTML Editor for CBuilder/Delphi
- WYSIWYG HTML Editor Component for Delphi
- The quest for an HTML editor VCL control
Stack Overflow :: Delphi, HTML, Editor, Component
- Delphi with HTML/CSS interface
- (以及许多其他人!)
我们使用 TRichView
是因为它具有广泛的功能。它可以加载/创建 RTF,并导出 HTML。但是它不是免费的。如果您正在寻找免费的东西,TJvRichView
和 JvRichEditToHtml
是不错的选择。
关于html - 如何在 Delphi 中将简单的 RichText 转换为 HTML 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954946/