Search code examples
c#printdocument

Printdocument ignoring printer and tray settings


I have a windows service that prints pdf files once it receives a request. It uses PrintDocument, but for some printers it seems to ignore printer and tray settings I give it in my code.

Currently every printer has a few trays which are all installed as seperate queues. For some printers I can just set the PrinterName property (of PrintDocument) to the name of the queue and it works fine. However a couple of printers seem to ignore this. I also tried setting the papersource, but this seems to alway be ignored.

Here's the code used to print:

PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = printer; //printer is send to the service along with the request
pd.Print();

Again: this works for some printers, but not for all.

I also tried using Papersource like this:

pd.PrinterSettings.DefaultPageSettings.PaperSource.SourceName = 
    pd.PrinterSettings.PaperSources[tray - 1].SourceName; //Tray is also send with the request

and like this:

pd.PrinterSettings.DefaultPageSettings.PaperSource = 
    pd.PrinterSettings.PaperSources[tray - 1];

What am I doing wrong here?

EDIT: The pdf file always has content in it, so it can't be empty.


Solution

  • I changed my code to use PrintQueue instead (https://msdn.microsoft.com/en-us/library/system.printing.printqueue(v=vs.110).aspx). This seems to work well, since I can directly call the queues instead of the printer.