このコードで:
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();