Мне нужно получить размер бумаги с помощью System.Drawing.Printing.PaperKind. Существуют ли какие-либо предопределенные значения? Я не хочу жестко задавать или вычислять размеры бумаги, я просто хочу получить ее программно. Благодарю.Как получить предопределенный размер бумаги PaperKind
ответ
Подмножество предопределенных значений можно было итерируя над 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;
LINQ путь для достижения этой цели является чем-то вроде этого:
PrinterSettings printerSettings = new PrinterSettings();
IQueryable<PaperSize> paperSizes = printerSettings.PaperSizes.Cast<PaperSize>().AsQueryable();
PaperSize a4rotated = paperSizes.Where(paperSize => paperSize.Kind == PaperKind.A4Rotated).FirstOrDefault();
Успехов!
// https://stackoverflow.com/questions/17602366/why-can-i-not-call-toarray -on-a-generic-ienumerable-object с использованием System.Linq; – udoline
public static PaperSize GetPaperSize(string Name)
{
PaperSize size1 = null;
Name=Name.ToUpper();
PrinterSettings settings = new PrinterSettings();
foreach (PaperSize size in settings.PaperSizes)
if (size.Kind.ToString().ToUpper() == Name)
{
size1 = size;
break;
}
return size1;
}
PaperSize pkSize;
PrintDocument printDoc = new PrintDocument();
for (int i = 0; i < printDoc.PrinterSettings.PaperSizes.Count; i++)
{
pkSize = printDoc.PrinterSettings.PaperSizes[i];
cmbPaperSize.Items.Add(pkSize);
}
Добавьте небольшое объяснение в свой ответ, чтобы объяснить, почему он работает. – Morgoth
используйте это с помощью System.Drawing.Printing; –
- 1. Как получить размер бумаги из переменной принтера?
- 2. LATEX размер бумаги
- 3. Полимер 1,0 размер бумаги для бумаги
- 4. Какао получить размер бумаги по умолчанию?
- 5. Размер специальной бумаги iTextSharp
- 6. Изменить размер бумаги
- 7. Laravel Excel размер бумаги
- 8. java printing: неправильный размер бумаги
- 9. Драйвер принтера - размер нестандартной бумаги
- 10. MS Access: размер нестандартной бумаги
- 11. Как изменить размер бумаги или размер печати в таблице GemBox
- 12. Неверный размер бумаги в AirPrint
- 13. Как настроить размер бумаги в vb.net
- 14. GTK # - печать: Как установить размер бумаги
- 15. PHPExcel: Как установить размер бумаги в листе с заданной пользователем размер бумаги?
- 16. Как изменить размер бумаги для печати на A6 или собственный размер бумаги в отчетах SAP Crystal?
- 17. Какао предопределенный изменить размер курсора мыши?
- 18. Это лучший способ получить размер бумаги через CUPS?
- 19. Изменить размер бумаги в середине латексного документа?
- 20. Отрегулируйте размер бумаги в отчете о кристалле
- 21. Изменить размер бумаги в выводе sejda?
- 22. размер бумаги для ярлыка (Brother QL 570)
- 23. Размер бумаги для печати в Firemonkey
- 24. `imagesc` в MATLAB: размер бумаги и` colorbar`
- 25. печать МОФ UserControl на размер бумаги,
- 26. Zebra Cups Размер бумаги драйвера не изменяется
- 27. Photoshop: размер бумаги A5 в портретном режиме
- 28. Определите размер бумаги в PDF-документе
- 29. MS ReportViewer не применяет размер нестандартной бумаги
- 30. Проблема с печатью Небольшой размер бумаги
No. В этом случае высота и ширина по-прежнему 0. – alga
человек, можно подумать, что есть какой-то вспомогательный класс для этого. http://msdn.microsoft.com/en-us/library/system.drawing.printing.paperkind.aspx перечисляет каждый PaperKind вместе с высотой и шириной. Возможно, вам следует написать класс-помощник и опубликовать его? – hackerhasid
Я видел этот класс перечислений. Но я хотел не писать никаких классов, потому что они могут быть уже написаны. – alga