.NET Печать. Всегда использовать настройки по умолчанию - PullRequest
0 голосов
/ 16 октября 2019

У меня есть сервис, который печатает. До сих пор сервис печатал с использованием метода WPF System.Windows.Controls.PrintDialog.PrintDocument, однако из-за различных проблем (производительность, ошибки обновления Windows, 32-битная служба при проблемах с 64-битной системой и т. Д.) Я перешел на использование традиционного метода System.Drawing.Printing.PrintDocument.

Поскольку он работает в качестве службы, я хочу, чтобы он всегда печатал с использованием настроек принтера по умолчанию (которые включают такие параметры, как настройки носителя и скорость печати для промышленного принтера этикеток, такие как Intermec / Honewell PM43)

Ранее я делал это, используя PrintDialog.PrintTicket = PrintQueue.DefaultPrintTicket.Clone

Однако я не могу найти эквивалентный метод в System.Drawing.Printing.PrintDocument, и служба не выбирает настройки принтера по умолчанию, заданные в свойствах принтера (в частности, в этом случае «Скорость печати»). )

Так что же эквивалентно PrintDialog.PrintTicket = PrintQueue.DefaultPrintTicket.Clone в System.Drawing.Printing.PrintDocument?

1 Ответ

0 голосов
/ 16 октября 2019

Следующий вопрос помог мне найти ответ Невозможно изменить DEVMODE принтера

//Get the registry key containing the printer settings
var regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Print\\Printers\\" + PrinterName);
if (regKey != null)
{    
    //Get the value of the default printer preferences
    var defaultDevMode = (byte[])regKey.GetValue("Default DevMode");
    //Create a handle and populate
    var pDevMode = Marshal.AllocHGlobal(defaultDevMode.Length);
    Marshal.Copy(defaultDevMode, 0, pDevMode, defaultDevMode.Length);
    //Set the printer preferences
    pd.PrinterSettings.SetHdevmode(pDevMode);
    //Clean up
    Marshal.FreeHGlobal(pDevMode);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...