使用System.Printing时JobStream关闭后打印任务被删除的问题求助
问题:使用System.Printing打印时任务假脱机后立即删除,无内容输出
问题详情
我在C#中使用System.Printing打印文件,已获取打印队列、创建PrintTicket设置了相纸类型、照片级质量、无页边距等特定属性,也创建了打印任务并通过StreamReader写入文件内容,但遇到以下异常情况:
- 打印任务一直处于Spooling状态,直到关闭
printJob.JobStream后,短暂变为Printing状态 - 随后打印任务立即被删除,最终无任何内容输出
我尝试过使用PrintQueueStream,但任务依旧持续处于假脱机状态。甚至尝试打印纯文本文件或直接写入文本到字节缓冲区,结果完全一致。
代码片段
if (!File.Exists(filePath)) { Console.WriteLine("File doesn't exist"); return false; } //string fileName = Path.GetFileName(filePath); try { PrintSystemJobInfo printJob = queue.AddJob(); using (StreamReader streamReader = new StreamReader(filePath)) { Stream jobStream = printJob.JobStream; Byte[] byteBuffer = UnicodeEncoding.Unicode.GetBytes(streamReader.ReadToEnd()); jobStream.Write(byteBuffer, 0, byteBuffer.Length); jobStream.Close(); } } catch (PrintJobException e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); return false; }
需求限制
- 必须实现照片级质量打印、使用光面相纸、无页边距,这些需求无法通过
PrintDocument实现 - 禁止显示任何打印对话框,因此必须采用无交互的打印方案
疑问
我了解到可以基于XPS文件创建打印任务而非直接使用JobStream,但不清楚如何将图片文件与PrintTicket的特定纸张属性结合,实现无对话框打印,也不确定该方案是否可行。
已查阅大量类似问题,但现有解决方案均不适用于我的场景。
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

