C# 使用c检索从打印机打印的文档#

C# 使用c检索从打印机打印的文档#,c#,printing,system.drawing,C#,Printing,System.drawing,这几天我一直在开发一项服务,将PDF文件发送到网络打印机,并使用C#和GhostscriptProcessor库进行有效打印 但现在我真的被我想做的下一步(也是最后一步)卡住了。我需要知道文件是否真的打印出来了。我尝试了我能做的一切(例如,我尝试了实现它,但我对powershell一点也不熟悉,我感到沮丧,因为我有太多无法解决的错误),但我找不到答案 如果文档已打印,是否有任何方法使用C#(任何库)检索。或者检索打印的整个文档日志?我可以通过C#调用任何告诉我所需信息的脚本(或者不调用,我可以绕

这几天我一直在开发一项服务,将PDF文件发送到网络打印机,并使用C#和
GhostscriptProcessor
库进行有效打印

但现在我真的被我想做的下一步(也是最后一步)卡住了。我需要知道文件是否真的打印出来了。我尝试了我能做的一切(例如,我尝试了实现它,但我对powershell一点也不熟悉,我感到沮丧,因为我有太多无法解决的错误),但我找不到答案

如果文档已打印,是否有任何方法使用C#(任何库)检索。或者检索打印的整个文档日志?我可以通过C#调用任何告诉我所需信息的脚本(或者不调用,我可以绕过它)

我想补充一点,我可以使用System.Drawing.Printing库访问打印机,如下所示:

var printServer = new PrintServer();
var myPrintQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
foreach (PrintQueue pq in myPrintQueues)
    {
        pq.Refresh();
        string printerName = "ES7470 MFP(PCL)";
        if (!pq.Name.ToUpper().Contains(printerName.ToUpper())) break;
        PrintJobInfoCollection jobs = pq.GetPrintJobInfoCollection();
        //And here I can use pq or jobs but I can't retrieve the log at all.
    }

我认为问题在于
PrintServer
,我不在您的环境中,所以我不能告诉您的设置,但应该这样做

string printerName = "ES7470 MFP(PCL)";
LocalPrintServer localPrintServer = new LocalPrintServer();
PrintQueueCollection printQueues = localPrintServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });

if (printQueues == null) return false;

PrintQueue queue = printQueues.Where(x => x.Name.Equals(printerName)).FirstOrDefault();
我猜你的应用程序会知道是否有人打印了什么,否则你必须每隔一两秒钟轮询打印机队列,以确定是否有作业转到了打印机