C# 在PrintQueue中添加作业时出现打印作业异常

C# 在PrintQueue中添加作业时出现打印作业异常,c#,printing,xps,printqueue,C#,Printing,Xps,Printqueue,使用此代码: PrintQueue pq; using (var PS = new LocalPrintServer()) { pq = PS.GetPrinterQueue("HP Printer"); } pq.AddJob("JobName 1", "C:\\Resources\\basic.xps", true, pq.DefaultPrintTicket.Clone()); 我可以使用一些打印机队列成功打印文件,但不能使用所有打印机队列成功打印文件,并且我获得了系统。Pri

使用此代码:

PrintQueue pq;
using (var PS = new LocalPrintServer())
{
    pq = PS.GetPrinterQueue("HP Printer");
}

pq.AddJob("JobName 1", "C:\\Resources\\basic.xps", true, pq.DefaultPrintTicket.Clone());
我可以使用一些打印机队列成功打印文件,但不能使用所有打印机队列成功打印文件,并且我获得了系统。PrintJobException--不支持指定的方法。(这里的参数PrintTicket默认为,但是我需要这个重载方法来更改这个值)

另外
PrintQueue.AddJob(字符串jobName、字符串filePath、bool fastCopy)
抛出System.PrintJobException

但是,使用
PrintQueue.AddJob(string jobName)
而不是
PrintQueue.AddJob(string jobName、string filePath、bool fastCopy、printtick printtick)
不会引发异常,但无法指定要打印的文件

是否每个驱动程序都支持PrintQueue.AddJob()?少了什么吗

先谢谢你

我最终解决了这个问题用它代替了
pq.AddJob()


只需在
PrintQueue.AddJob(字符串jobName、字符串filePath、bool fastCopy)中设置
fastCopy=false

pq.UserPrintTicket = pq.DefaultPrintTicket.Clone(); // Whatever PrintTicket we need
pq.Commit();
string s;
using (StreamReader strReader = new StreamReader("C:\\Resources\\basic.xps")){
s = strReader.ReadToEnd();
}
 PrintDocument p = new PrintDocument();
 p.PrintPage += delegate(object sender1, PrintPageEventArgs e1)
 {
       e1.Graphics.DrawString(s, new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(0, 0, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));

};
p.Print();