0
votes

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.

1
Have you tried to print not empty page? - Samvel Petrosov
I'm printing pdf files that can't be empty (if they are, they never arrive at the service). So there is always content in the files. I should have specified that in the question, sorry. - Dnomyar96

1 Answers

1
votes

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.