I have several custom paper sizes defined on a printer(the printer is set as default). I need to be able to select one of these formats as the default one.
A programmatic(C#) solution would be ideal, but a command line one would be ok too.
Right now, I am able to get the list of paper sizes(name/dimensions) defined on the printer, and I can find out which one is the default.
In order to select another format as default, the only solution I have so far is by changing the dmPaperSize field on the devMode structure; BUT I cannot find out the correct value that corresponds to the desired paper format. So I set dmPaperSize to 0, and increment it, until the correct format appears on the printer. This takes a very long time on some printers.
Is there another way to select(by name) the default papaer format on the default printer ?
You are in the right direction in changing the default printer settings. .NET doesn't provide direct support to change the default settings of a printer.
I used the
PrinterSettings
class from this codeproject article to change the printer settings.The available paper sizes from the printer can be retrieved using the
PrintDocument.PrinterSettings
. See the sample code below for retrieving the available papersizes from the printer and using thePaperSize.RawKind
for changing the papersize of the printer.The following code would set the default printer papersize:
On how to print using PrintDocument you could refer this link.
Hope this helps.