Использую такие компоненты как TdrawObject 2.3. Всё вывожу напечать следующим кодом
Код:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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 файл правильно, а иногда сохраняет и сразу удаляет его. Народ может кто подскажет в чём проблема? как её решить?