Tôi cần lấy khổ giấy bằng System.Drawing.Printing.PaperKind. Có bất kỳ giá trị được xác định trước nào không? Tôi không muốn hardcode hoặc tính toán kích thước giấy, tôi chỉ muốn làm cho nó có lập trình. Cảm ơn.Cách lấy khổ giấy được xác định trước bằng PaperKind
Trả lời
Một tập hợp con của các giá trị được xác định trước có thể có bằng cách duyệt qua một bộ sưu tập PrinterSettings.PaperSizes
.
Ứng dụng của chúng tôi có người dùng chọn máy in, cung cấp cho chúng tôi một đối tượng PrinterSettings
. Có trong PrinterSettings
là danh sách các máy in được hỗ trợ bởi PaperSize
- không phải mọi thứ (lưu ý rằng Trình điều khiển Tài liệu XPS (win7) hỗ trợ tất cả các kích cỡ).
Trong trường hợp của chúng tôi, tập hợp con các kích thước được hỗ trợ này là tất cả những gì chúng tôi cần. Người dùng được chỉ định PaperKind
được chuyển tới mã in của chúng tôi và nó đi qua đối tượng PrinterSettings
của chúng tôi cho đến khi tìm thấy lựa chọn của người dùng hoặc từ bỏ và sử dụng mặc định.
Trong ví dụ bên dưới, bạn có thể thấy rằng các đối tượng PaperSize
được điền chính xác.
PrinterSettings settings = new PrinterSettings();
foreach (PaperSize size in settings.PaperSizes)
Debug.WriteLine(size);
Chỉ là tập hợp con, nhưng có lẽ cũng đủ cho bạn. các API in trong .NET thực sự không rõ ràng và msdn không thực sự giúp ích nhiều ... Hy vọng nó sẽ giúp bạn đi đúng hướng!
Bạn có thể thử lớp System.Drawing.Printing.PaperSize. Có một thuộc tính RawKind có thể được đặt thành System.Drawing.Printing.PaperKind.
Cái gì như:
PaperSize size = new PaperSize();
size.RawKind = (int) PaperKind.A3;
Một LINQ cách để đạt được mục tiêu của bạn là một cái gì đó như thế này:
PrinterSettings printerSettings = new PrinterSettings();
IQueryable<PaperSize> paperSizes = printerSettings.PaperSizes.Cast<PaperSize>().AsQueryable();
PaperSize a4rotated = paperSizes.Where(paperSize => paperSize.Kind == PaperKind.A4Rotated).FirstOrDefault();
Chúc may mắn!
// https://stackoverflow.com/questions/17602366/why-can-i-not-call-toarray -on-a-generic-ienumerable-object bằng 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);
}
Thêm một giải thích nhỏ cho câu trả lời của bạn để giải thích lý do tại sao nó hoạt động. – Morgoth
sử dụng tính năng này bằng System.Drawing.Printing; –
- 1. Đặt khổ giấy trong FPDF
- 2. MS Access: khổ giấy tùy chỉnh
- 3. MSVC's _M_X64 Xác định macro được xác định trước
- 4. Cách lấy năm trước bằng cách sử dụng PHP
- 5. Thay đổi khổ giấy ở giữa tài liệu latex?
- 6. Microsoft C++ Macro được xác định trước
- 7. Cách đặt macro được xác định trước trong Mã :: Blocks
- 8. Cách mở JFileChooser với kích thước được xác định trước
- 9. cách lấy thông số được xác định trong tệp jasper?
- 10. WeasyPrint có thể phù hợp với khổ giấy Tự động
- 11. JSLint: đã được sử dụng trước khi được xác định
- 12. Vẽ các hàm mật độ được xác định trước bằng ggplot và R
- 13. Cách lấy url trước bằng cách sử dụng PHP
- 14. Gọi một hàm trước khi nó được xác định | PHP
- 15. Bazaar (bzr) Các vị trí được xác định trước
- 16. Cách tạo cổng TCP kết nối bằng cách sử dụng C đến cổng được xác định trước
- 17. Cách so sánh đầu vào âm thanh với âm thanh được xác định trước?
- 18. Delphi biến môi trường được xác định trước
- 19. Điều khiển SWT với các kiểu được xác định trước
- 20. .NET DateTime không có kích thước được xác định trước
- 21. Cách lấy giá trị PK ID được tạo tự động trước đó bằng JDBC và HSQLDB
- 22. Hàm mật độ xác suất từ giấy, được triển khai bằng C++, không hoạt động như dự định
- 23. Cách lưu ảnh raw_data bằng kẹp giấy
- 24. lấy danh sách các tuyến đường zend được xác định
- 25. Cách lấy phần tử trước?
- 26. Android ListView addHeaderView() nullPointerException cho các Chế độ xem được xác định trước được xác định trong XML
- 27. Lỗi không xác định biên dịch khuôn khổ opencv
- 28. Cách lấy giá trị ô với định dạng được áp dụng (giá trị ô được định dạng) bằng OpenXML SDK
- 29. Làm cách nào để lấy yếu tố gốc bằng tên thẻ được chỉ định bằng jquery?
- 30. Cách xác định ngày của 6 tháng trước đầy đủ
số Trong trường hợp chiều cao và chiều rộng vẫn là 0. – alga
người đàn ông, bạn sẽ nghĩ rằng có một số loại lớp helper cho việc này. http://msdn.microsoft.com/en-us/library/system.drawing.printing.paperkind.aspx liệt kê từng PaperKind cùng với chiều cao và chiều rộng. Có lẽ bạn nên viết một lớp trợ giúp và đăng nó? – hackerhasid
Tôi đã thấy rằng lớp enum. Nhưng tôi không muốn viết bất kỳ lớp nào vì có thể có những lớp đã được viết. – alga