このコードで:
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--Specified method is not supported が発生しました。(ここのパラメータ 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();