Как создать файл в RTF из Delphi / C++Builder / Lazarus?

17.06.2020

Популярный вопрос – как отправить свой документ из Delphi-приложения в RTF? RTF - формат популярный, и если нет Microsoft Word, то можно использовать для него WordPad. Редактор по умолчанию в Mac OS X — TextEdit, также поддерживает RTF. Большинство текстовых редакторов в том или виде поддерживают RTF.

Rich Text Format (RTF) – это продвинутый текстовый формат авторства Microsoft 1982 года. Частенько используется в электронных книгах, реже в документах. Изначально целью такового формата было создать удобный файл для работы с книгами и документами. Это удалось сделать с помощью встроенных мета-тегов, позволяющих быстро перемещаться по документу.

Формат достаточно доступный для воспроизведения. Более того, в составе Windows обычно идёт DLL для рендеринга и отображения RTF.

Три типовых способа сохранить RTF из Delphi и Lazarus

Есть великое множество средств сохранения текста в RTF из Delphi.
1. Вы можете сами формировать RTF. В википедии есть прелестный пример простого RTF-текста:

Сохранение в RTF пример из Wikipedia
1
2
3
4
5
6
{\rtf1
 Привет!
 \par
 {\i Это} некий
 отформатированный {\b текст}.\par
}

Согласитесь, очень просто выглядит, понятно и легко воспроизводится!

2. Для задач посложнее существуют специализированные конвертеры в RTF - часто с редактором, например от нашего партнёра и коллеги по цеху TRichView.

3. Ну и, с нашей точки зрения, наиболее правильный способ - FastReport! Ведь вам надо не просто “сделать какой-нибудь RTF” - обычно его надо получить с данными, объектами разными - и вот тут как-раз на выручку приходит множество поддерживаемых FastReport сущностей - не просто форматированный текст, таблиц, но и иллюстрации, штрих-коды, графики, карты, индикаторы, графические примитивы и т.д.

Создаём RTF в Delphi без единой строчки кода!

Итак - собираем проект, внедрив в него FastReport c компонентом “экспорт в RTF”, делаем отчёт, запускаем, нажимаем в предпросмотре “сохранить” и вызываем экспорт из предпросмотра (ниже покажу, как реализовать запись в RTF с помощью кода Delphi). Появляется окошко настроек экспорта в RTF.

настраиваем изображение и отображение RTF в Delphi и Lazarus  Настройки страниц RichText в Delphi и Lazarus

Какие страницы нашего документа отправить в Excel, диапазон или только определённые страницы.

Настройки экспорта – включать ли картинки-изображения в RTF, получить большее визуальное соответствие с начальным вариантом (WYSIWYG), переносить ли из отчёта разрывы страниц , а также есть возможность повторять наименования столбцов на каждом листе.

RTF формат текстовый, постраничный, а где страницы, там колонтитулы.

Экспорт нижнего и верхнего колонтитулов (Page header и Page footer) в итоговом документе мы можем настроить (экспортировать в виде текста, в виде колонтитулов или же полностью убрать заголовки/подвалы страниц).

Открыть после экспорта – результирующий файл будет открыт сразу же после экспорта программой, которая стоит по умолчанию для открытия RTF-документов.

RTF параметры сохранения

Можно традиционно указать, куда отправить RTF-файл (локально в файл, на электронную почту, FTP или поместить в облако).

И вот обещанный код для сохранения в RTF сразу из Delphi / Lazarus

Сохранение в RTF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TForm1.Button1Click(Sender: TObject);
begin
 {Формируем отчёт. Перед экспортом отчёт необходимо обязательно сформировать}
 frxReport1.PrepareReport();
 {Устанавливаем диапазон экспортируемых страниц. По умолчанию экспортируются все страницы сформированного отчёта}
 frxRTFExport1.PageNumbers := '2-3';
 {Устанавливаем, нужно ли экспортировать изображения}
 frxRTFExport1.ExportPictures := True;
 {Устанавливаем, экспортировать ли разрывы страниц, чтобы страницы при печати соответствовали страницам сформированного отчёта}
 frxRTFExport1.ExportPageBreaks := True;
 {Устанавливаем, нужно ли формировать непрерывный документ с пропуском промежуточных заголовков и подвалов страниц.}
 frxRTFExport1.SuppressPageHeadersFooters := True;
 {Устанавливаем WYSIWYG}
 frxRTFExport1.Wysiwyg := True;
 {Устанавливаем режим экспорта заголовков/подвалов страниц
 hfText - в виде текста;
 hfPrint - в виде колонтитулов. SuppressPageHeadersFooters автоматически устанавливается в True;
 hfNone - пропускать}
 frxRTFExport1.HeaderFooterMode := hfText;
 {Устанавливаем, нужно ли открывать результирующий файл после экспорта}
 frxRTFExport1.OpenAfterExport := False;
 {Устанавливаем, нужно ли отображать прогресс экспорта (показывать, какая страница в данный момент экспортируется)}
 frxRTFExport1.ShowProgress := False;
 {Устанавливаем, нужно ли отображать окно диалога с настройками фильтра экспорта}
 frxRTFExport1.ShowDialog := False;
 {Устанавливаем имя результирующего файла.}
 {Обратите внимание на то, что если не установить имя файла и отключить показ диалогового окна фильтра экспорта,}
 {то всё равно будет отображён диалог выбора имени файла}
 frxRTFExport1.FileName := 'C:\Output\test.rtf';
 {Экспортируем отчёт}
 frxReport1.Export(frxRTFExport1);
end;

Хочу отметить, что этот способ позволяет записать полность в полноценный RTF документ, который изначально мог состоять из различных элементов, включая (но далеко не ограничиваясь) , собственно, RTF. На выходе получится аккуратно и красиво оформленный в соответствии со стандартом полноценный RTF-документ, который участками можно с этим форматированием копировать-вставлять в другие документы. Кстати, а вы знали, в некоторых инженерно-конструкторских компаниях RTF принят в качестве внутреннего стандарта технической документации? Мы узнали это от наших клиентов.

VCL Экспорты Lazarus FastReport Delphi RTF VCL Экспорты Lazarus FastReport Delphi RTF
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»