2013-10-04 3 views
3

i`m работы с PrintDocument класса, используя следующий код:.net завершения печати событие

printDocument.PrintPage += (s, ev) => 
{ 
     ev.Graphics.DrawImage(bitmap, Point.Empty); 
     ev.HasMorePages = false; 
}; 
printDocument.EndPrint += (sender, args) => 
{ 
     var buyerDTO = buyerRow.Buyer; 
     buyerDTO.EnvelopePrinted = true; 
     View.Control.Invoke(new Action(() => View.UpdateBuyer(buyerDTO))); 
     Manager.UpdateBuyer(buyerDTO); 
     ((IDisposable)sender).Dispose(); 

     View.Control.Invoke(
          new Action(() => View.SetResetPrintStatusEnable(View.CurrentBuyers.Any(buyer => buyer.EnvelopePrinted)))); 
}; 
printDocument.Print(); 

, как я понимаю EndPrint событие происходит, когда документ оказывается (и отправлен на принтер), но еще не напечатаны на бумаге.

Я должен проверить, действительно ли документ напечатан на бумаге. Как я могу это сделать?

ответ

1

Я должен проверить, документ напечатан на бумаге

В общем случае, вы не можете добиться того, что вы хотите с абстрактным принтером.

Даже если вы будете отслеживать состояние задания печати для конкретного принтера, используя API спулера, вы можете столкнуться с этим случаем, когда задание было отправлено на принтер (при этом спулер полагает, что он был напечатан), но не было фактическая печать (например, бумага закончилась, и пользователь перезагрузил принтер).

Смежные вопросы