Использую такие компоненты как TdrawObject 2.3. Всё вывожу напечать следующим кодом
Код:
Код:
Printer.Title := application.Title + ' document';
Printer.Copies := PrintDialog1.Copies;
begin
try
Printer.BeginDoc;
destRec := Rect(0, 0,
(fMf.Width div screen.PixelsPerInch* fPtrPPI.cx-100),
(fMf.Height div screen.PixelsPerInch* fPtrPPI.cy-100)); // расчёт области на печать
for i:=0 to kx-2 do
begin
for j:=0 to ky-1 do
begin
printer.Canvas.StretchDraw(destrec,fmf);
printer.NewPage;
OffsetRect(destRec,
0,
-round((printer.PageHeight-200))); //смещение по у
end;
destRec := Rect(0, 0,
(fMf.Width div screen.PixelsPerInch* fPtrPPI.cx-100),
(fMf.Height div screen.PixelsPerInch* fPtrPPI.cy-100));
OffsetRect(destRec, // смещение по х
-round((printer.PageWidth-200)*(i+1)),
0);
end;
finally
Printer.EndDoc;
end;
где fmf это TMetafile. То есть в метафайле хранится изображение автоматически создаваемое с помощью библиотеки ТDrawObject. при сохранении его в файл всё происходит ровно, рисунок как надо, то есть тот который создали. Но при печати на виртуальном принтере происходят странные вещи: я в данном коде делаю смещение и вывожу его на принтер. То есть одно изображение будет скажем на 24 листах А4. всё зависит от того как нанесёшь объекты. В некоторых случаях он сохраняет в xps файл правильно, а иногда сохраняет и сразу удаляет его. Народ может кто подскажет в чём проблема? как её решить?