I was just testing a similar situation and came to following logging output, without the 'Keep printed documents' flag set:
Info: 11/24/2017 12:08:18 PM - JobStatus for document testA4.pdf is Printing, Retained.
Info: 11/24/2017 12:08:22 PM - JobStatus for document testA4.pdf changed from Printing, Retained to Retained.
Info: 11/24/2017 12:08:22 PM - JobStatus for document testA4.pdf changed from Retained to Completed, Retained.
Info: 11/24/2017 12:08:22 PM - Document testA4.pdf marked as Completed by printer.
Info: 11/24/2017 12:08:33 PM - JobStatus for document testA4.pdf changed from Completed, Retained to Deleted.
Seems that it may be printer/driver dependent.
Code used to get this output:
public void MonitorPrintJobStatus(string printerName, Document document, CancellationToken token)
{
using (var printServer = new LocalPrintServer())
{
using (var printQueue = printServer.GetPrintQueue(printerName))
{
foreach (var printJobInfo in printQueue.GetPrintJobInfoCollection())
{
if (printJobInfo.Name == document.DocumentToBePrinted.Path)
{
bool printed = false;
var previousPrintJobStatus = printJobInfo.JobStatus;
_logger.LogInfo($"{DateTime.Now} - JobStatus for document {document.DocumentToBePrinted.Path} is {previousPrintJobStatus}.");
while (!token.IsCancellationRequested && !printed)
{
printJobInfo.Refresh();
if (previousPrintJobStatus != printJobInfo.JobStatus)
{
_logger.LogInfo($"{DateTime.Now} - JobStatus for document {document.DocumentToBePrinted.Path} changed from {previousPrintJobStatus} to {printJobInfo.JobStatus}.");
previousPrintJobStatus = printJobInfo.JobStatus;
}
if (printJobInfo.IsCompleted)
{
_logger.LogInfo($"{DateTime.Now} - Document {document.DocumentToBePrinted.Path} marked as Completed by printer.");
document.Status = DocumentPrintStatus.Printed;
printed = true;
}
}
break;
}
}
}
}
}