Hallo,
ich muss Bitmaps mit einer Auflösung von ca. 3500x2400 bzw. 2400x3500 Pixel drucken.
Dabei habe ich das Problem, das mir regelmäßig das Drucksystem von Windows XP (wahrscheinlich auch andere Systeme ) den Bach runter geht. Das macht sich Bemerkbar, das beim erneuten Ausdruck eine leere Seite ausgedruckt wird.
Erst ein Neustart der Druckerwarteschlange unter Verwaltung->Dienste bringt das System wieder zum drucken.
Hier der relativ simple Quellcode:
Delphi-Quellcode:
seitenHoehe:=printer.PageHeight;
seitenBreite:=printer.PageWidth;
Printer.BeginDoc;
image:=TImage.create(nil);
try
image.Picture.LoadFromFile(bildpfad);
except
messagedlg('Konnte das Bild "'+bildpfad+'" nicht laden',mterror,[mbok],0);
image.free;
continue;
end;
bitmap:=TBitmap.Create;
GRect.Left:=0;
GRect.Top :=0;
bitmap.assign(image.Picture.graphic);
w:=Image.Picture.width;
h:=Image.Picture.height;
if w > h then begin
rotateBitmap(bitmap,90);
hlp:=w;
w:=h;
h:=hlp;
end;
if h/w < seitenHoehe / seitenBreite then begin
GRect.Bottom := Trunc(((h / f) / (w/f)) * seitenBreite);
GRect.Right := trunc(seitenBreite);
end else begin
GRect.Bottom := trunc(seitenHoehe);
GRect.Right := Trunc( (w/f) / (h/f) * seitenHoehe);
end;
Printer.Canvas.StretchDraw(Grect,bitmap);
bitmap.Free;
image.free;
Printer.enddoc;
Freue mich über anregungen wie man das Problem in den Griff bekommen kann.
Mir ist auch aufgefallen, das einige Drucker(treiber) direkt eine weiße Seite ausdrucken, andere wenigstens das Bild einmal ausdrucken bevor das Spoolsystem den Geist aufgibt.
Sven
PS:Benutze Delphi6