Определение текущего типа бумаги для принтера по умолчанию

2

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

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

Документация MSDN начинает разворачиваться о принтерах, реализующих этот стандартный бла-бла, но очень мало на пути практических советов: -

Тип бумаги, используемой принтером. Должен быть выражен в форме, указанной в заявке на печать документов ISO/IEC 10175 (DPA), которая суммирована в Приложении C RFC 1759 (Printer MIB). Это свойство наследуется от CIM_Printer.

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

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

Кто-нибудь успел получить эту информацию?

Теги:
printing

2 ответа

5
Лучший ответ

Не используйте WMI, если вам это действительно нужно. Используйте встроенные классы .Net, такие как Foxfire. Вы можете получить принтер, используя следующее:

System.Drawing.Printing.PrinterSettings printer = new System.Drawing.Printing.PrinterSettings();
printer.PrinterName = "YourPrinterName";

Затем вы можете получить доступ ко всем требуемым свойствам через:

printer.DefaultPageSettings;
  • 0
    +1 за пример кода
2

Есть ли какая-то конкретная причина, по которой вы используете WMI вместо классов .Net-принтера в System.Drawing.Printing?

Вы можете легко получить свою информацию через свойство PaperSources класса PrinterSettings, которое содержит все имеющиеся в принтере PaperKinds (может быть несколько, поскольку у нескольких принтеров есть несколько лотков)

  • 0
    Будем расследовать, спасибо за указатель

Ещё вопросы

Сообщество Overcoder
Наверх
Меню