How To…Access RTF Data via the JITPipeline

Question

“How can I use a JITPipeline to provide access to a DBRichtext component on my report?”

Solution

The following example implements the JITPipeline GetfieldAsString event to access RTF data. For this example a Delphi TRichEdit is placed on a form and used as the source of the rich text. Another solution could use an .rtf file as the source of the rich text – in which case a FileStream would be used rather than the MemoryStream that is used here.

Download: RtfViaJIT.zip

Sample Delphi code:

function TForm1.ppJITPipeline1GetFieldAsString(aFieldName: String): String;
begin

  if (aFieldName = 'RichTx') then
    Result := GetRichEdAsString(RichEdit1);

end;

function TForm1.GetRichEdAsString(aRichEd: TRichEdit): String;
var
  lRTFStream: TMemoryStream;
begin

  Result := '';

  {create temp memory stream}
  lRTFStream := TMemoryStream.Create;

  try

    {save the TRichEd's rtf data to the memory stream}
    aRichEd.Lines.SaveToStream(lRTFStream);

    SetLength(Result, lRTFStream.Size);

    {copy the rtf stream to the buffer}
    lRTFStream.Position := 0;
    lRTFStream.Read(Result[1], lRTFStream.Size);

  finally

    {free the memory stream}
    lRTFStream.Free;

  end;


end;