使用此代码:
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();
答案 0 :(得分:0)
只需在fastCopy = false
PrintQueue.AddJob(string jobName, string filePath, bool fastCopy)
即可