在打印队列中添加作业时出现打印作业异常



使用此代码:

PrintQueue pq;
using (var PS = new LocalPrintServer())
{
    pq = PS.GetPrinterQueue("HP Printer");
}
pq.AddJob("JobName 1", "C:\Resources\basic.xps", true, pq.DefaultPrintTicket.Clone());

我可以使用某些打印机队列成功打印文件,但不能使用所有打印机队列,并且我得到了System.PrintJobException--不支持指定的方法(这里的参数PrintTicket是默认的,但我需要这个重载方法来更改这个值)

此外,PrintQueue.AddJob(string jobName, string filePath, bool fastCopy)抛出System.PrintJobException.

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

是否每个驱动程序都支持PrintQueue.AddJob()?有什么东西不见了吗?

提前非常感谢。

我最终用这个而不是pq.AddJob():解决了这个问题

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();

只需在PrintQueue.AddJob(string jobName, string filePath, bool fastCopy) 中设置fastCopy = false

最新更新