TPDFlibPrinter

Печать, VCL, создание документов

Описание

Дает компонентный фасад с привычным жизненным циклом BeginDoc, Canvas, NewPage, EndDoc и Abort, но создает PDF-документ вместо отправки физического задания принтеру

Объявление

Uses PDFlibPDFPrinter;

TPDFlibPrinter = Class(TComponent)

Параметры

BeginDocОткрывает новый PDF-документ и открывает первую страницу через Canvas
NewPageФиксирует текущую канву как PDF-страницу и открывает канву следующей
EndDocФиксирует финальную страницу и записывает FileName, когда назначение было задано
AbortОтбрасывает активное задание, не записывая целевой файл, и сбрасывает компонент в пустой документ
SetPageSizeЗадает портретные размеры бумаги в пунктах PDF до BeginDoc

Свойства

CanvasАктивный холст VCL между BeginDoc и EndDoc или Abort
FileNameНеобязательный выходной путь PDF; пустое значение оставляет результат только в LibraryInstance
TitleЗаголовок документа, применяемый при старте задания
DPIРазрешение координат холста от 24 до 2400, по умолчанию 96
CanvasOptionsРежим импорта холста от -1 до 4, по умолчанию векторный режим 2
OrientationpoPortrait или poLandscape; альбомная меняет местами настроенные размеры бумаги
PaperWidth, PaperHeightПортретные размеры бумаги от 1 до 14400 пунктов PDF
PageWidth, PageHeightАктивные размеры только для чтения в пикселах холста после конвертации DPI и ориентации
PageWidthPoints, PageHeightPointsАктивные размеры только для чтения в пунктах PDF
PageNumberТекущая страница задачи (нумерация с 1) и ноль в простое
Printing, AbortedСостояние жизненного цикла только для чтения
LibraryInstanceСобственный экземпляр TPDFlib для осмотра или дальнейшей обработки готового PDF
LastErrorCodeБазовый код ошибки библиотеки из последней PDF-операции

Пример

Printer := TPDFlibPrinter.Create(nil);
try
  Printer.FileName := 'report.pdf';
  Printer.BeginDoc;
  Printer.Canvas.TextOut(72, 72, 'First page');
  Printer.NewPage;
  Printer.Canvas.TextOut(72, 72, 'Second page');
  Printer.EndDoc;
finally
  Printer.Free;
end;

Примечания

Свойства конфигурации не могут меняться при активном документе, а неверное использование жизненного цикла вызывает EPDFlibPrinter

Компонент владеет своей библиотекой и холстом, создает независимый документ для каждого задания, сохраняет завершенный документ для дальнейших операций API и никогда не открывает диалог печати и не обращается к спулеру операционной системы

Оберните задачу в try/except и вызывайте Abort, только пока задача активна; провалившиеся внутренние операции конвертации завершают задачу и устанавливают Aborted

См. также

GetCanvasDC, NewPageFromCanvasDC, RenderPagesToPrintStream