Hannah Ptr Ответов: 1

Как перенаправить задания принтера на другой принтер


Я изо всех сил пытаюсь перенаправить отложенные задания принтера из очереди печати на другой принтер. Я искал много альтернатив, но, похоже, не могу найти конкретного способа сделать это.

Мне также удалось получить все отложенные задания, но, похоже, я не могу найти способ отправить их на другой принтер.

Я нашел здесь кое что для приостановки заданий печати но я не хочу возобновлять их на том же принтере но на другом

Простой подход к управлению заданиями печати с помощью WMI[^]

Что я уже пробовал:

LocalPrintServer localPrintServer = new LocalPrintServer();
            PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();

            //Set the correct printer
            pname = this.listBox1.SelectedItem.ToString();
            //Gather print jobs
            GetPrintJobsCollection(defaultprinter); //this is working

            RedirectPrintJobs(pname); //not sure how

            //Cancel old jobs on the old printer 
            CancelPrintJob(defaultprinter); //this is working

Hannah Ptr

Я также подумал о создании пакетного файла для извлечения файла, который был отправлен на старую печать, и создания нового задания печати.

1 Ответов

Рейтинг:
0

OriginalGriff

Вероятно, вы не можете: данные печати в очереди специфичны для конкретного принтера - если у вас есть две разные марки (или даже разные модели или версии программного обеспечения в одной и той же марке и модели), то данные будут бессмысленны для принтера, на который вы их перенаправили.
Вот что делает драйвер печати: принимает ваши входные данные и форматирует их для конкретного принтера, используя "набор инструкций производителя", чтобы создать файл, который диспетчер очереди печати (часть Windows и программное обеспечение, управляющее каждой очередью) отправляет на фактическое оборудование.

Вам действительно понадобится перенаправление, прежде чем что-либо попадет в драйвер печати, задолго до того, как оно попадет в очередь печати.


Hannah Ptr

Я протестировал это решение в visual studio, и оно сработало, когда я выбрал файл .spl из папки spool. Но теперь я не знаю, как преобразовать его в c#. :[

https://www.codeproject.com/KB/printing/EMFSpoolViewer.aspx?msg=3544620