2015-08-11 2 views
1

Поэтому у меня есть следующий код, чтобы получить доступ к локальному принтеру и его текущей работы в C#:Отправлять объект PrintQueue с одного компьютера на другой?

 PrintQueue pq = LocalPrintServer.GetDefaultPrintQueue(); 
     PrintJobInfoCollection pjic = pq.GetPrintJobInfoCollection(); 
     foreach(var printjob in pjic) 
     { 
      Console.WriteLine(printjob.Name); 
     } 
     Console.ReadLine(); 

То, что я хочу сделать, это отправить этот PrintQueue объект на другой компьютер, который подключен к принтеру и добавить работу в этой очереди на задания этой очереди. По сути, идея заключается в том, чтобы печатать удаленно по сетям. У меня есть некоторый опыт сетевого программирования на Java, но недостаточно, чтобы хорошо перевести на C#. Поэтому мне было интересно, может ли кто-нибудь сломать это для меня. (И я знаю, что существует множество способов настройки Windows/Mac OS для печати с удаленного принтера, но это приложение для меня является опытом обучения). Благодаря !

ответ

0

Я не знаю, если это работает, потому что я не проверял, но идея:

  1. Установите PrintServer на компьютер вы хотите
  2. Получить PrintQueue от Printserver
  3. перебрать рабочие места и добавить каждую работу в эту PrintQueue

к сожалению, я не могу найти путь к добавить задание на печать напрямую, что я нашел является PrintQueue.AddJob() метод, который принимает некоторые аргументы, как имя задания, путь документа и т.д.

// Step 1: Set the PrintServer to the computer you want 
PrintServer printServer = new PrintServer("\\ANOTHER-COMPUTER-NAME"); 

// Step 2: Get the PrintQueue from the PrintServer 
PrintQueue printQueue = printServer.GetPrintQueue("That Printer Name on Another Computer"); 

// Step 3: Iterate over jobs and add each job to that PrintQueue 
foreach (var printjob in pjic) 
{ 
    printQueue.AddJob(printjob.Name, "document path here", true, pq.DefaultPrintTicket.Clone()); 
} 

// and then do, like passing the printQueue to the PrintDialog 
PrintDialog printDialog = new PrintDialog(); 
printDialog.PrintQueue = printQueue; 

Для получения путь к документу, вы можете обратиться к этой answer.

Смежные вопросы