You may say that there are lots of discussions about this in stackOverflow, but most of them are more complicated than what I need and mostly for other languages.
I have
If you really want to generate RTF content using a TRichEdit
, then you should store the native RTF it generates alongside the converted HTML. If the only reason you are using TRichEdit
is so that you can have simple formatting capabilities, then you are probably better off using an HTML edit control that generates native HTML content.
Regardless of which way you go, it is best to store the native format for users to edit the content, and convert it as needed to other formats (instead of converting it both directions).
If you use TRichEdit
, then you can easily stream the RTF content in and out of the control, although I recommend TJvRichEdit
over 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;
Manually converting RTF to HTML is not an easy task. There are unicode character considerations, font styles, font codes, paragraph formatting, numbered lists, special HTML characters, and SO much more. Even though you only need to support simple formatting, users often use other features that cause conversion headaches -- like copying content from MSWord and pasting it into your app with all sort of formatting and font styles.
JvRichEditToHtml
does a decent job converting RTF to HTML, but we ended up writing our own conversion unit because we do a lot more with RTF than simple formatting. JvRichEditToHtml
should easily handle what you've described as long as users don't introduce complex content via a copy/paste, or use the keyboard shortcuts to format the content (e.g., bullets = ctrl+shft+L, indent = ctrl+M, etc.).
There are also several good HTML edit controls for Delphi if you want to bypass the complexities of authoring in RTF and converting to HTML:
Google Results :: Delphi, HTML, Editor, Component
Stack Overflow :: Delphi, HTML, Editor, Component
We use TRichView
because of its extensive capabilities. It can load/create RTF, and export HTML. It isn't free however. If you are looking for something free, TJvRichView
and JvRichEditToHtml
are good options.