Подмножество предопределенных значений может быть получено путем итерации по коллекции PrinterSettings.PaperSizes
.
В нашем приложении пользователь выбирает принтер, предоставляя нам объект PrinterSettings
. В PrinterSettings
содержится список PaperSize
, поддерживаемых принтером, но не все (обратите внимание, что драйвер документов XPS (win7) поддерживает все размеры).
В нашем случае это подмножество поддерживаемых размеров - это все, что нам нужно. Указанный пользователем PaperKind
передается в наш код печати, и он проходит через наш PrinterSettings
объект, пока не найдет выбор пользователя или не сдается и не использует значение по умолчанию.
В приведенном ниже примере вы можете видеть, что объекты PaperSize
заполнены правильно.
PrinterSettings settings = new PrinterSettings();
foreach (PaperSize size in settings.PaperSizes)
Debug.WriteLine(size);
Это только подмножество, но, может быть, этого также достаточно для вас. API-интерфейсы печати в .NET действительно неясны, и MSDN не очень помогает ... Надеюсь, это поможет вам выбрать правильный путь!