Исключение задания на печать при добавлении задания в PrintQueue

С этим кодом:

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

1 ответ

Просто установите fastCopy = false в PrintQueue.AddJob(string jobName, string filePath, bool fastCopy)

Другие вопросы по тегам