Документ напечатан или нет в C#
Я использовал следующий код для печати PDF:
var fileName = filepath;
ProcessStartInfo psInfo = new ProcessStartInfo();
psInfo.Arguments = ConfigurationManager.AppSettings["printer_name"];
psInfo.FileName = fileName;
psInfo.WindowStyle = ProcessWindowStyle.Hidden;
psInfo.Verb = "print";
psInfo.CreateNoWindow = false;
psInfo.UseShellExecute = true;
process = Process.Start(psInfo);
Следующее, чтобы получить статус принтера:
string query = string.Format("SELECT * from Win32_Printer "+ "WHERE Name LIKE '% {0}'",printerName);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection coll = searcher.Get();
foreach (ManagementObject printer in coll)
{
foreach (PropertyData property in printer.Properties)
{
Logger.LogInfo(""+property.Name, "" +property.Value);
}
}
а также попытался следить за очередью печати:
LocalPrintServer server = new LocalPrintServer();
PrintQueueCollection queueCollection = server.GetPrintQueues();
PrintQueue printQueue = null;
foreach (PrintQueue pq in queueCollection)
{
if (pq.FullName == "HP LaserJet P1505n")
printQueue = pq;
}
int numberOfJobs = 0;
if (printQueue != null)
numberOfJobs = printQueue.NumberOfJobs;
Все, что я хочу сделать, это знать, распечатан ли документ, который я печатал, используя (1), успешно или нет! (2)nd код Snippet просто показывает одно и то же свойство anme и значения всегда. Так что не может уведомить о состоянии печати. (3)rd код Snippet всегда контролирует очередь один раз и сообщает '0' число рабочих мест.
Так как же на самом деле вернуть статус печати?
1 ответ
Знать о статусе задания на печать..! Попробуй это,
SelectQuery qry = new SelectQuery("PrintJob");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(qry))
using (ManagementObjectCollection printJobs = searcher.Get())
foreach (ManagementObject printJob in printJobs)
{
string name = (string) product["Name"];
string[] nameParts = name.Split(',');
string printerName = nameParts[0];
string jobNumber = nameParts[1];
string document = (string) product["Document"];
string jobStatus = (string) product["JobStatus"];
}
Надеюсь, это поможет.