2015-02-10 71 views
1

增加工作有了這個代碼:打印作業的異常當在打印隊列

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.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

就在PrintQueue.AddJob(string jobName, string filePath, bool fastCopy)

設置 fastCopy = false

我終於用這個代替pq.AddJob()解決它