我有一个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文件中始终包含内容,因此不能为空。
答案 0 :(得分:0)
我将代码更改为使用PrintQueue(https://msdn.microsoft.com/en-us/library/system.printing.printqueue(v=vs.110).aspx)。这看起来效果很好,因为我可以直接调用队列而不是打印机。