Printdocument忽略打印机和纸盘设置

时间:2017-05-11 10:05:21

标签: c# printdocument

我有一个Windows服务,一旦收到请求就打印pdf文件。它使用PrintDocument,但对于某些打印机,它似乎忽略了我在代码中给出的打印机和托盘设置。

目前,每台打印机都有几个托盘,这些托盘都作为单独的队列安装。对于某些打印机,我可以将PrinterName属性(PrintDocument)设置为队列名称,它可以正常工作。然而,一些打印机似乎忽略了这一点。我也试过设置papersource,但这似乎总是被忽略。

以下是用于打印的代码:

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

再次说明:这适用于某些打印机,但不适用于所有打印机。

我也试过像这样使用Papersource:

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

并且像这样:

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

我在这里做错了什么?

编辑:pdf文件中始终包含内容,因此不能为空。

1 个答案:

答案 0 :(得分:0)

我将代码更改为使用PrintQueue(https://msdn.microsoft.com/en-us/library/system.printing.printqueue(v=vs.110).aspx)。这看起来效果很好,因为我可以直接调用队列而不是打印机。