tags:

views:

299

answers:

2

I need to get paper size by System.Drawing.Printing.PaperKind. Are there any predefined values? I don't want to hardcode or calculate paper sizes, I just want to get it programmatically. Thanks.

A: 

You might try the System.Drawing.Printing.PaperSize class. There's a RawKind property which can be set to a System.Drawing.Printing.PaperKind.

Something like:

PaperSize size = new PaperSize();
size.RawKind = (int) PaperKind.A3;
statichippo
No. In this case height and width are still 0.
alga
statichippo
I have seen that enum class. But I wanted do not write any classes because there may be already written ones.
alga
+1  A: 

A subset of predefined values can be had by iterating over a PrinterSettings.PaperSizes collection.

Our application has the user select a printer, providing us with a PrinterSettings object. Contained within PrinterSettings is a list of PaperSize's supported by the printer - not everything (note that the XPS Document Driver (win7) supports all sizes).

In our case this subset of supported sizes is all we need. A user specified PaperKind is passed to our printing code, and it goes through our PrinterSettings object until it either finds the user's selection or gives up and uses a default.

In the example below you can see that the PaperSize objects are correctly filled.

PrinterSettings settings = new PrinterSettings();
foreach (PaperSize size in settings.PaperSizes)
    Debug.WriteLine(size);

It's only a subset, but maybe that's also enough for you. the printing APIs in .NET are really unclear and msdn isn't really much help... Hopefully it puts you on the right track!

Matt Jacobsen