Извлечение HTML из RTF

<< Нажмите, чтобы показать Содержание >>

Извлечение HTML из RTF

Модуль [VCL/FMX] RVRTFDeEncapsulation / fmxRVRTFDeEncapsulation;

type
  TRVAttachmentPositionEvent = procedure (Pos: Integer;
    var TextToInsert: TRVUnicodeStringof object;
 
  TRVRTFEncapsulationType = (rvrtfetNone, rvrtfetHTML, 
    rvrtfetText, rvrtfetError);
 
function GetRTFEncapsulationType(

  RTFStream: TStream): TRVRTFEncapsulationType;
function ExtractEncapsulatedHTMLFromRTF(RTFStream, HTMLStream: TStream;
  OnAttachmentPosition: TRVAttachmentPositionEvent = nil): Boolean;

Инкапсуляция HTML в RTF выполняется Microsoft Outlook/Exchange. В результате создаётся RTF-файл на основе HTML. Внешне он близок к исходному HTML-файлу, то есть содержит RTF-код, имитирующий исходный HTML-документ, но при этом содержит данные, позволяющие извлечь исходный HTML-документ без изменений.

GetRTFEncapsulationType проверяет, содержит ли указанный поток HTML или обычный текст, инкапсулированный в RTF.

Возможные возвращаемые значения:

rvrtfetNone – RTF без инкапсуляции;

rvrtfetHTML – RTF, содержащий инкапсулированный HTML;

rvrtfetText – RTF, содержащий инкапсулированный обычный текст;

rvrtfetError – данные не являются RTF.

ExtractEncapsulatedHTMLFromRTF извлекает инкапсулированный HTML или обычный текст из RTF, копируя данные из RTFStream в HTMLStream.

Если также задана функция обратного вызова OnAttachmentPosition, она вызывается при обнаружении позиции вложения. В этом обработчике можно запомнить позицию в HTMLStream, где находится вложение, и/или вставить в результирующий HTML или текст дополнительные данные в эту позицию.

См. также:

Дополнительная информация об инкапсуляции HTML в RTF.