Я должен получить формат бумаги Системой. Рисование. Печать. PaperKind. Там кто-либо предопределен значения? Я не хочу к hardcode или вычисляю форматы бумаги, я просто хочу получить его программно. Спасибо.
Подмножество предопределенных значений может быть получено путем итерации по коллекции 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 не особо помогает ... Надеюсь, это поможет вам встать на правильный путь!
Вы можете попробовать класс System.Drawing.Printing.PaperSize. Существует свойство RawKind, которому можно присвоить значение System.Drawing.Printing.PaperKind.
Примерно так:
PaperSize size = new PaperSize();
size.RawKind = (int) PaperKind.A3;