我正在编写C#应用程序以在本地打印机上打印PDF,并在本地打印机上重定向打印任务(如果本地打印机失败)。
问题:当我通过Windows假脱机将任务发送到本地打印机时,即使打印机出现错误(例如缺纸),作业也会在几秒后从假脱机中消失。然而,如果我在失败后将纸张放入打印机,则会打印文档(但仍未显示在假脱机中)。
即使打印机没有工作,打印机似乎也会缓冲打印任务......
这是我的打印代码:
// using PdfiumViewer;
public static void PrintPdf(string path, ManagementObject printer)
{
PdfDocument doc = PdfDocument.Load(path);
PrintDocument pd = doc.CreatePrintDocument();
pd.PrinterSettings.FromPage = 1;
pd.PrinterSettings.ToPage = doc.PageCount;
pd.PrinterSettings.PrinterName = printer["Name"].ToString();
ClearPrintQueue(printer["Name"].ToString());
if ((bool)printer["WorkOffline"])
throw new UnavailablePrinterException("L'imprimante est hors ligne.");
else
pd.Print();
}
如何避免打印机缓冲或至少检测到作业失败并取消它?