как установить принтер по умолчанию - PullRequest
7 голосов
/ 02 марта 2011

Как установить PrintDocument.PrinterSettings.PrinterName в качестве принтера по умолчанию?

Я не говорю о настройке принтера по умолчанию в операционной системе. Скорее, я говорю о настройке объекта PrintDocument, чтобы он печатался на принтере по умолчанию.

Ответы [ 6 ]

11 голосов
/ 01 декабря 2011

Если я правильно понимаю, вы бы хотели сбросить имя принтера до принтера по умолчанию (1), не воссоздавая PrintDocument и, (2 ) после того, как вы, возможно, уже установили его на что-то другое или, (3), когда принтер по умолчанию мог измениться со времени первого создания PrintDocument (поэтому нельзя полагаться на простое кэширование значений по умолчанию, предоставленных целевым экземпляром после первоначального построения) .

В этом случае при поиске « C # получить имя принтера по умолчанию » появляется следующая отличная статья о stackoverflow: Какой лучший способ получить принтер по умолчанию в .NET

Опираясь на образец, приведенный в ответе с наибольшим количеством голосов, и учитывая, что у вас уже есть уже существующий PrintDocument с некоторыми настройками, которые вы не хотите восстанавливать; Вы можете создать новый экземпляр класса PrinterSettings, исключительно для копирования имени принтера по умолчанию.

// Create a new instance of the PrinterSettings class, which 
// we will only use to fetch the default printer name
System.Drawing.Printing.PrinterSettings newSettings = new System.Drawing.Printing.PrinterSettings();

// Copy the default printer name from our newSettings instance into our 
// pre-existing PrintDocument instance without recreating the 
// PrintDocument or the PrintDocument's PrinterSettings classes.
existingPrintDocumentInstance.PrinterSettings.PrinterName = newSettings.PrinterName;

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

5 голосов
/ 02 марта 2011

Он автоматически инициализируется на принтере по умолчанию. Ничего не делать.

2 голосов
/ 03 декабря 2011
GetDefaultPrinter() 

{ PrinterSettings settings = new PrinterSettings(); 

foreach (string printer in PrinterSettings.InstalledPrinters) 

{ settings.PrinterName = printer; 

if (settings.IsDefaultPrinter) 

return printer; 

} 

return string.Empty; 

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

По умолчанию вы будете приземляться на принтере по умолчанию, если вы ничего не установили на своем объекте.Вот официальный источник, который вы искали: Ссылка MSDN на класс PrintDocument

Отметьте предложение, написанное чуть выше примера: «В следующем примере кода печатается файл с именем C: \ My Documents\ MyFile.txt на принтере по умолчанию . "

HTH

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

Поправьте меня, если я ошибаюсь, но вы хотите получить имя принтера по умолчанию, а затем установите PrintDocument.PrinterSettings.PrinterName на это.

При использовании PrintDocument.PrinterSettings.PrinterName по умолчанию используется принтер по умолчанию.

0 голосов
/ 02 марта 2011

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

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

HTH

...