Как выбрать принтер для нескольких документов? - PullRequest
1 голос
/ 20 декабря 2011

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

Но как мне показать диалог печати и сохранить информацию о принтере? А как можно распечатать на конкретном принтере после закрытия диалогового окна?

У меня есть это в моей функции печати, и это прекрасно работает (но не для того принтера)

var p = new Process
{
    StartInfo = new ProcessStartInfo
    {
       CreateNoWindow = true,
       Verb = "print",
       FileName = filePath
    }
};
p.Start();

Ответы [ 3 ]

2 голосов
/ 21 декабря 2011

Спасибо Рэю за большую помощь.

Следующий метод отлично подходит для выбора принтера.Очередь принтера захватывается, когда пользователь нажимает «Печать» в диалоговом окне печати. ​​

public PrintQueue SelectPrinter()
{
     var dialog = new PrintDialog();
     if (dialog.ShowDialog() == true)
     {
        if (dialog.PrintQueue != null)
           return dialog.PrintQueue;
     }
     return null;
}

Очередь печати может использоваться при печати нескольких документов;

...
var startInfo = new ProcessStartInfo
                        {
                           CreateNoWindow = true,
                           Verb = "printTo",
                           FileName = filePath,
                           Arguments = printQueue.FullName, // <-- here
                           WindowStyle = ProcessWindowStyle.Hidden,
                           UseShellExecute = true,
                        };
var p = Process.Start(startInfo);
...
1 голос
/ 20 декабря 2011

Вы можете использовать PrintDialog

Обычный шаблон использования будет

PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
    dialog.PrintVisual(visual, "Job Name");
    //dialog.PrintDocument(paginator, "Document Name");

}

Если вы хотите распечатать из файла, вам нужно загрузить файл и создать DocumentPaginator . Как это сделать, зависит от формата файла, который вы пытаетесь распечатать.

0 голосов
/ 20 декабря 2011

Это только подсказка, а не полный ответ, но я думаю, что это может помочь.

Вы можете перечислить принтеры и изменить принтер по умолчанию, используя реестр Windows.

Смотрите здесь и здесь .

Вы можете легко читать и писать в реестре, используя .NET Framework.

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