定期的に印刷するアプリを作成しようとしています。アプリを開発し、HP Photosmart B110aプリンターでテストしたところ、すべて正常に動作しましたが、次のプリンターであるLexmark MS621では、PrintQueue から何も返されません。何故ですか?何か不足していますか?
要約すると、これが機能する必要があるコードです。
//PDFtoPrinter documentation: https://github.com/svishnevsky/PDFtoPrinter
static void Print()
{
using (LocalPrintServer printServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer))
{
using (PrintQueue queue = new PrintQueue(printServer, printServer.DefaultPrintQueue.Name, PrintSystemDesiredAccess.AdministratePrinter))
{
//Start printing
new PDFtoPrinterPrinter().Print(new PrintingOptions(printServer.DefaultPrintQueue.Name, @"C:\Pdf\blank.pdf")).GetAwaiter().GetResult();
queue.Refresh(); //Just to make sure I refresh the queue
if (queue.NumberOfJobs > 1) //On my HP printer this if statement returns true after I started printing, but on the Lexmark it says there is no printjob even tho it started to print!
Console.WriteLine("There is a job!");
foreach (PrintSystemJobInfo info in queue.GetPrintJobInfoCollection()) //I've tried to print out all JobInfo on the printer, on the HP I get one, but on Lexmark I get 0
Console.WriteLine(info.Name);
PrintSystemJobInfo jobInfo = queue.GetPrintJobInfoCollection().FirstOrDefault(x => x.Name.Equals("blank.pdf")); //Get the jobInfo of the current file that I'm trying to print. Again, on HP I get the jobInfo but on the Lexmark I get nothing.
if (queue.IsOutOfPaper) //When I start to print without the printer having any paper this line on the HP returns true, but on the Lexmark it's alwaysfalse.
Console.WriteLine("There is no paper!");
if(jobInfo.IsPaperOut) //Same problem...
Console.WriteLine("There is no paper!");
}
}
}
追加情報を一つ。
HPのものはネットワークプリンターで、LexmarkのものはUSB経由で接続されており、両方でテストページを印刷しました.
もちろんドライバーも違いますが、ドライバーの種類も!
Lexmark のものはtype 3
HP がtype 4
.
どんな助けでも大歓迎です!