Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > печать графических файлов


Автор: Petro123 18.9.2009, 09:59
Возникла необходимость распечатывать графичекие файлы(н-р jpg). С возможностью предварителного просмотра. Полазил по форуму, но дельного ничего не нашел.
В голову пришли следующие способы:
1. Использовать ShellExecute(application.Handle, 'print', PChar('C:\1.bmp'), nil, nil, SW_SHOW);
 Но почему то не печатает, а просто выводит в окно просмотра. 
2. Использовать Rave Report, но объект BitMap растягивает изображение, а нужен реальный размер.
3. Сохранять на канве (например формы) и оттуда печатать. Но не нравится тем, что предварительный просмотр будет не стандартный.
Какие варианты обычно используются для этой цели


Автор: former 18.9.2009, 10:56
Petro123, а если так?
Код

uses 
  Printers; 

procedure PrintBitmap(aGraphic: TGraphic; Title: string); 
begin 
  Printer.Title := Title; 
  Printer.BeginDoc; 
  Printer.Canvas.Draw(0, 0, aGraphic); 
  Printer.EndDoc;
end; 


Для Jpeg будет выглядеть вот так:
Код

uses Jpeg;

procedure TForm1.Button1Click(Sender: TObject);
var Img:TJpegImage;
begin
  Img:=TJpegImage.Create;
  try
    Img.LoadFromFile('Твой файл.jpg');
    PrintBitmap(Img,'Пример');
  finally
    Img.Free;
  end;
end;

procedure TForm1.PrintBitmap(aGraphic: TGraphic; Title: string);
begin
  Printer.Title := Title;
  Printer.BeginDoc;
  Printer.Canvas.Draw(0, 0, aGraphic);
  Printer.EndDoc;
end;

Автор: Petro123 18.9.2009, 12:20
Ну так то работает, только уменьшает изображение 
да и предварительный просмотр еще бы прикрутить...

Автор: former 18.9.2009, 15:04
Цитата(Petro123 @  18.9.2009,  12:20 Найти цитируемый пост)
Ну так то работает, только уменьшает изображение 

Цитата(Petro123 @  18.9.2009,  09:59 Найти цитируемый пост)
растягивает изображение, а нужен реальный размер.

Тебе не угодишь. То растягивает изображение, то уменьшает.
Цитата(Petro123 @  18.9.2009,  12:20 Найти цитируемый пост)
да и предварительный просмотр еще бы прикрутить... 

Да пожалуйста. Я вообще думаю, что тебе лучше использовать компоненты JvPreviewControl, JvPreviewRenderGraphics и JvPreviewPrinter из библиотеки http://sourceforge.net/project/showfiles.php?group_id=45786.

Автор: Petro123 21.9.2009, 15:34
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)