2015-03-20 8 views
0

Ну, это очень странная проблема, и я уже нашел черное магическое решение. Мне любопытно, почему.В C#, в чем отличие настроек PrinterSettings от PrintDocument и PrintDialog?

Я пишу программу, использующую принтер этикеток Brother QL-700 для печати этикеток. Мне нужно, чтобы этикетки печатались без отображения диалогового окна принтера. Принтер этикеток поддерживает различный размер рулонов этикеток и размер рулона этикеток по умолчанию составляет 29 мм, а то, что мне нужно, - 62 мм. Я обнаружил, что я могу установить Размер страницы по

PrintDocument doc = new PrintDocument(); 
PaperSize size = new PaperSize() ; 
size.Width = 244;//2.44 inch = 62mm 
size.Height = 244; 
size.RawKind = 256;//RawKind=0 does not work, I don't know why 
doc.PrinterSettings.DefaultPageSettings.PaperSize = size; 

Однако, это не будет работать, драйвер принтера будет показывать сообщение о том, ширина не подходит.

Но если я изменю-копирование PrinterSettings из PrintDialog(), не показывая его,

PrintDialog dlg = new PrintDialog(); 

doc.PrinterSettings = dlg.PrinterSettings; 

Затем он работает.

В заключение, что я не понимаю, почему

size.RawKind = 256; 

и

PrintDialog dlg = new PrintDialog(); 
doc.PrinterSettings = dlg.PrinterSettings; 

может сделать работу принтера?

ответ

0

В документации для RawKind не указано, что 0 является допустимым значением. В нем также указано, что любое значение выше 118 указывает на собственный размер бумаги. Поскольку вы указываете нестандартный формат бумаги, значение 256 указывает, что размер является обычным, и именно поэтому он работает.

+0

О, я вижу. Вы знаете что-нибудь о различии между стандартными настройками PrintSettings PrintDialog и PrintDocument? – iuradz

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

  • Нет связанных вопросов^_^