Witam,
Program nanosi kilka obrazów na płótno drukarki. Obrazy są pobierane z dysku i obrabiane w programie. Niestety często jeden lub kilka nie było drukowanych, więc zacząłem szukać przyczyny. Oto "odchudzona" procedura która nanosi obrazy na płótno:
procedure TForm1.Kartka;
var R:TRect;
begin
Obraz(typ);
R:=Rect(500,1000,7000,4000);
printer.Canvas.StretchDraw(R,obr);
Obr.SaveToFile('1.bmp');
R:=Rect(500,5000,7000,8000);
printer.Canvas.StretchDraw(R,obr);
Obr.SaveToFile('2.bmp');
R:=Rect(500,9000,7000,12000);
printer.Canvas.StretchDraw(R,obr);
Obr.SaveToFile('3.bmp');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
obr.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{...}
obr:=TBitmap.Create;
{...}
end;
procedure TForm1.Obraz(typ:string[20]);
begin
{...}
//if FileExists(sciezka+typ+'.bmp') then
obr.LoadFromFile(sciezka+typ+'.bmp');
{...}
end;
Usuwałem z kodu zmienne odpowiadające za położenie i wielkość obrazów, lecz to nie pomagało. Zacząłem zapisywać do plików obrobione obrazy i wszystkie obrazy pojawiają się na dysku, lecz pomimo to na wydruku ich czasem nie ma. Każdy z obrazów zajmuje 15 do 20 MB. Czasem nie ma jednego lub dwóch z nich, chociaż najczęściej są wszystkie.
Procedura "Obraz" działa poprawnie, obrobione obrazy są poprawnie (testowo) zapisywane na dysku jako "1.bmp","2.bmp" i "3.bmp".
Czym to może być spowodowane? Za duże obrazy, brak pamięci?
Problem ten występuje przy drukowaniu na różnych typach kopiarek (Canon i Minolta) w PCL i w PS oraz przy tworzeniu PDF, nie występuje natomiast przy drukowaniu do pliku XPS.
Pozdrawiam.