Карта сайтаСсылкиКонтакты

Хостинг


Печать из Delphi с возможностью просмотра

PDF Печать
Статьи

Печать сейчас широко используется в приложениях Delphi, когда нужно напечатать текст, изображение и т.д. Большинство приложений Windows поддерживают возможность печати. В Delphi есть несколько способов печати, в зависимости от качества, которого Вы хотите достичь.

Предварительный просмотр при печати

Печать формы

В Delphi у формы Form имеется функция Print, которая может выводить на печать форму.


procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Print;
end;

Также Вы можете использовать свойство PrintScale, которое изменяет масштаб печатаемого объекта. Это свойство содержит три опции:

  • poNone - печать будет произведена с настройками принтера.
  • poProportional - печать страницы, которая будет иметь те же размеры, что и на экране.
  • poPrintToFit - размер изменяется в зависимости от размера страницы.

При этом получается не самое высокое качество печати.

Печать управления TRichEdit

Функция Print имеется также у компонента TRichEdit.


procedure TForm1.Button2Click(Sender: TObject);
begin
  RichEdit1.Print('Имя документа');
end;

Как видите, здесь функция Print получает один строковой параметр, который будет отображаться в очереди печати как имя документа.

Печать текстовых файлов при помощи ShellExecute

Также можно использовать функцию API ShellExecute для печати текстового документа.


uses
{ … } ShellApi { … }
procedure TForm1.Button3Click(Sender: TObject);
begin
  ShellExecute(
      Handle, 'Print', 'C:\Test.txt',
      nil, nil, SW_Hide);
end;

При этом открывается приложение, которое ассоциировано с файлом. В моем случае это Блокнот.

Диалоговое окно печати

В Delphi имеется два диалоговых окна для печати: диалоговое окно при помощи компонента TPrintDialog и при помощи диалогового окна установок принтера TPrinterSetupDialog.

Диалоговое окно TPringDialog

Компонент диалогового окна TPrintDialog Вы можете использовать непосредственно перед началом печати. Компонент TPrintDialog имеет свои свойства и метода, которые Вы сможете найти в справке по Delphi. Диалоговое окно вызывается конструкцией:


procedure TForm1.Button4Click(Sender: TObject);
begin
  PrintDialog1.Execute;
end;

Диалоговое окно Настройка печати

При вызове этого диалогового окна появляется возможность выбрать настройки печати, такие как размер бумаги, ориентацию и т.д. Можно также использовать это окно для настроек принтера. Вызывается это диалоговое окно функцией Execute.


procedure TForm1.Button5Click(Sender: TObject);
begin
  PrinterSetupDialog1.Execute;
end;

TPrinter

Объект TPrinter используется для печати документов, текста и т.д. Вот пример использования TPrinter для печати прямоугольника. Не забудьте добавить модуль Printers в раздел uses формы.


procedure TForm1.Button6Click(Sender: TObject);
begin
  Printer.BeginDoc;
  Printer.Canvas.Rectangle(100, 100, 300, 300);
  Printer.EndDoc;
end;

Таким же образом, на холсте Canvas объекта Printer можно напечатать и текст.


procedure TForm1.Button7Click(Sender: TObject);
begin
  Printer.BeginDoc;
  Printer.Canvas.TextOut(100, 100, 'http://delphiru.ru/');
  Printer.EndDoc;
end;

А также вывести растровое изображение на печать, словно на холст.


procedure TForm1.Button8Click(Sender: TObject);
var
  bmp: TBitmap;
begin
  bmp:= TBitmap.Create;
  bmp.LoadFromFile('C:\athena.bmp');
  Printer.BeginDoc;
  Printer.Canvas.Draw(10, 10, bmp);
  Printer.EndDoc;
  bmp.Free;
end;

При печати растровое изображение будет небольшим, чтобы вывести нужный Вам размер на печать, используйте StretchDraw.

Реализация Просмотра Печати

Предварительный просмотр печати важен в приложениях для пользователя, потому как позволяет просматривать изображение или текст перед выводом его на печать. Здесь мы создадим предварительный просмотр печати с возможностью изменения масштаба изображения.

Небольшое приложение с использованием предварительного просмотра печати Вы можете посмотреть здесь.

Копирование содержимого формы в буфер обмена


uses
  { ... }, Clipbrd;


procedure TForm1.Button2Click(Sender: TObject);
var
  FormImage: TBitmap;
begin
  FormImage := GetFormImage;
  try
    Clipboard.Assign(FormImage);
    Image1.Picture.Assign(Clipboard);
  finally
    FormImage.Free;
  end;
end;

 

Комментарии   

 
+1 #1 Анастасия 31.05.2013 08:40
Подскажите, пожалуйста, а как реализовать печать сразу нескольких компонентов (image и edit), которые вынесены на панель?
Цитировать
 
 
-1 #2 Анатолий 31.05.2013 11:14
Form.Print выводит на печать форму и все компоненты, которые на ней.
Цитировать
 
 
+1 #3 higimo 21.06.2013 10:53
Очень бы хотелось выругаться по поводу не воспоизводимост и примера Диалоговое окно TPringDialog
Цитировать
 
 
0 #4 Александр 21.06.2013 11:02
Можно и так: if not PrintDialog1.Ex ecute then exit;
Цитировать
 
 
+1 #5 Айсултан 20.05.2014 12:47
спасибо большое!
Цитировать
 
 
0 #6 www 29.05.2014 16:08
Since the admin of this site is working, no uncertainty very soon it will
be well-known, due to its feature contents.
Цитировать
 
 
0 #7 Евгений 31.03.2017 00:20
Спасибо за отличную статью Благодаря Вам у меня получилось настроить печать формы!
Цитировать
 

Добавить комментарий


Защитный код
Обновить