var
strect:Trect;
temhi,temwd,temhi2,temwd2,i:integer;
begin
try
if Printer.Printers.Count=0 then
begin
showmessage('打印机调用错误,请您先安装打印机!');
end
else
begin
TemBmp.LoadFromStream(Stream);
TemBmp.HandleType:=bmDIB;
if PrintDialog.Execute then
begin
temhi:=TemBmp.height;
temwd:=TemBmp.width;
temhi2:=printer.pageheight;
temwd2:=printer.pagewidth;
with strect do
begin
if (temhi/temwd-temhi2/temwd2)>0 then
begin
top:=0;
left:=Round((temwd2-temhi2/temhi*temwd)/2);
right:=temwd2-Left;
bottom:=temhi2;
end
else
begin
left:=0;
top:=Round((temhi2-temwd2/temwd*temhi)/2);
right:=temwd2;
bottom:=temhi2-Top;
end;
end;
Printer.BeginDoc;
for i:=1 to Printer.Copies do
begin
Printer.Canvas.StretchDraw(Strect,TemBmp);
if i<>Printer.Copies then Printer.NewPage;
end;
Printer.EndDoc;
end;
end;
except
showmessage('打印机调用错误!');
end;
end;