rvprint TRVPrint

Свойства   Методы   События

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

rvprint TRVPrint

Свойства   Методы   События

Компонент для печати документов, находящихся в TRichView, TRichViewEdit, TDBRichView, или TDBRichViewEdit.

Модуль [VCL/FMX] PtblRV / fmxPtblRV.

Синтаксис

TRVPrint = class(TCustomRVPrint)

Иерархия

TObject

TPersistent

TComponent

TCustomRVPrint

Как использовать

Печать или рисование страниц

1.Назначьте исходный компонент для печати (метод AssignSource).

2.При необходимости назначьте колонтитулы (SetHeader, SetFooter).

3.Отформатируйте страницы (метод FormatPages).

После этого можно:

получить количество страниц (свойство PagesCount);

отобразить предварительный просмотр печати (с помощью компонента TRVPrintPreview; см. также методы DrawPreview, MakePreview, MakeScaledPreview, DrawPage, DrawPageAt);

напечатать весь документ (метод Print) или диапазон страниц (метод PrintPages).

После завершения работы можно освободить часть временно выделенной памяти (метод Clear).

Сохранение в PDF

1.Проверьте, доступно ли сохранение в PDF (CanSavePDF).

2.Назначьте исходный компонент для печати (метод AssignSource).

3.При необходимости назначьте колонтитулы (SetHeader, SetFooter).

4.Сохраните PDF (метод SavePDF).

После завершения работы можно освободить часть временно выделенной памяти (метод Clear).

Принтер

Компонент печатает на принтере, заданном по умолчанию, используя его стандартные параметры. Глобальный объект Printer предоставляет доступ к доступным принтерам. Чтобы выбрать другой принтер, присвойте нужное значение свойству Printer.PrinterIndex. Чтобы изменить ориентацию страниц, измените Printer.Orientation. После этих изменений перед печатью или предварительным просмотром вызовите FormatPages.

В качестве альтернативы можно использовать «виртуальный принтер» для рисования страниц на любой канве. Установите VirtualPrinter.Active = True, чтобы использовать параметры, заданные в VirtualPrinter (размер страницы и DPI), вместо параметров текущего принтера.

События

Можно отображать информацию о процессе разбиения документа на страницы и печати:

OnFormatting происходит во время разбиения на страницы (метод FormatPages);

OnSendingToPrinter происходит во время печати (методы Print и PrintPages).

Дополнительное содержимое можно рисовать с помощью следующих событий:

OnPagePrepaint и OnPagePostpaint позволяют рисовать на каждой странице снизу/поверх документа ТРВ-Редактора;

OnPrintComponent запрашивает изображение вставленного компонента для печати.

Также имеются информационные события, которые происходят при рисовании некоторых специальных объектов. Можно сохранять координаты этих объектов и реализовывать специальную обработку, например добавление гиперссылок при печати в PDF с помощью сторонней библиотеки:

OnDrawCheckpoint

OnDrawHyperlink

Поля

Поря указываются в свойстве Margins.

Поля в TRVPrint

Поля в TRVPrint

Этот рисунок показывает назначение свойств полей. Для упрощения отступы абзацев не показаны.

Поля задаются в единицах Units (на рисунке показаны красным).

TRichView.LeftMargin, TRichView.RightMargin, TRichView.TopMargin и TRichView.BottomMargin задаются в «стандартных» пикселях (1 пиксель = 1/Style.UnitsPixelsPerInch дюйма; на рисунке показаны синим).

Если MirrorMargins = True, левое и правое поля на чётных страницах меняются местами.

См. также свойство ClipMargins.

Рисунок выше относится к версиям компонентов VCL и LCL.

В версии FireMonkey вместо свойства MarginsPen используется MarginsStroke.

Колонтитулы

TRVPrint поддерживает три типа верхних и нижних колонтитулов:

обычные колонтитулы;

колонтитулы первой страницы (используются только при TitlePage = True);

колонтитулы чётных страниц (используются только при FacingPages = True).

Верхние колонтитулы назначаются методом SetHeader, нижние – методом SetFooter.

В качестве верхнего или нижнего колонтитула можно использовать любой документ ТРВ-Редактора. Положение колонтитулов задаётся свойствами HeaderY и FooterY.

Колонтитулы

Колонтитулы

Если колонтитул слишком велик, размер основного документа корректируется, чтобы избежать наложения:

Пример большого верхнего колонтитула

Пример большого верхнего колонтитула

Если вам нужны более гибкие настройки колонтитулов, вы можете:

разбить документ на несколько частей, каждая со своим колонтитулом;

использовать событие OnPagePrepaint;

использовать TRVReportHelper.

См. также: GetHeaderRect, GetFooterRect.

Настройки для совместимости

У некоторых принтеров могут возникать проблемы с печатью сложного содержимого (особенно при печати в PDF или метафайл). В этом случае можно использовать следующие свойства:

MetafileCompatibility;

NoMetafiles.

Документ внутри TRVPrint

TRVPrint содержит внутри экземпляр TPrintableRV (потомок TRichView). Эта переменная с именем rv является публичной, и вы можете изменять некоторые её свойства:

Color,

BackgroundProperties,

BackgroundPicture.

Изменение остальных свойств не рекомендуется.

Пример:

MyRVPrint.rv.Color := clWhite;

Примечание: rv не содержит полной информации о печатаемом документе, а только информацию, необходимую для форматирования. Поэтому необходимо обеспечить, чтобы исходный компонент TRichView не был уничтожен или изменён во время печати.

Пошаговая печать

Диапазон печатаемых элементов можно задать с помощью свойств MinPrintedItemNo и MaxPrintedItemNo. Если эти свойства задают часть диапазона элементов документа, печатается только эта часть и только страницы, которые её содержат.

Эти свойства позволяют реализовать пошаговую печать: когда готова следующая часть документа, её можно напечатать ниже ранее напечатанного фрагмента. Эта возможность может использоваться для печати бухгалтерских журналов, логов и т. п.

Порядок рисования

Компонент рисует содержимое страницы в следующем порядке:

1.фон страницы;

2.событие OnPagePrepaint;

3.текстовые блоки и сноски в рамке верхнего колонтитула с PositionInText = rvpitBelowText;

4.верхний колонтитул;

5.текстовые блоки и сноски в рамке верхнего колонтитула с PositionInText = rvpitAboveText;

6.текстовые блоки и сноски в рамке нижнего колонтитула с PositionInText = rvpitBelowText;

7.нижний колонтитул;

8.текстовые блоки и сноски в рамке нижнего колонтитула с PositionInText = rvpitAboveText;

9.текстовые блоки и сноски в рамке основного документа с PositionInText = rvpitBelowText;

10.основной документ, включая сноски и концевые сноски;

11.текстовые блоки и сноски в рамке основного документа с PositionInText = rvpitAboveText;

12.событие OnPagePostPaint.

Текстовые блоки и сноски в рамке рисуются в порядке их расположения в родительском документе.

Особые свойства в версии для FireMonkey

Следующие свойства используются только в FireMonkey:

BestDPI.

См. также

См. также:

метод UpdatePaletteInfo;

TRichView.PageBreaksBeforeItems;

TRichView.AssignSoftPageBreaks;

компонент TRVReportHelper;

типизированная константа RichViewAlternativePicPrint;

типизированная константа RichViewPixelsPerInch.

Демонстрационный проект:

Demos\*\Assorted\Printing\