You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:35:03