Показать сообщение отдельно
  #1  
Старый 21.09.2012, 21:47
Artempokrowski Artempokrowski вне форума
Прохожий
 
Регистрация: 05.07.2010
Сообщения: 12
Репутация: 10
По умолчанию не печатает в xps файл

Использую такие компоненты как 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 файл правильно, а иногда сохраняет и сразу удаляет его. Народ может кто подскажет в чём проблема? как её решить?
Ответить с цитированием