Printdocument 忽略打印机和托盘设置
Printdocument ignoring printer and tray settings
我有一项 windows 服务可以在收到请求后打印 pdf 文件。它使用 PrintDocument,但对于某些打印机,它似乎忽略了我在代码中提供的打印机和托盘设置。
目前每台打印机都有几个托盘,它们都安装为单独的队列。对于某些打印机,我只需将 PrinterName 属性(PrintDocument 的)设置为队列的名称,它就可以正常工作。然而,一些打印机似乎忽略了这一点。我也试过设置纸张来源,但这似乎总是被忽略。
这是用于打印的代码:
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 文件始终包含内容,因此不能为空。
我更改了我的代码以改用 PrintQueue (https://msdn.microsoft.com/en-us/library/system.printing.printqueue(v=vs.110).aspx)。这似乎工作得很好,因为我可以直接调用队列而不是打印机。
我有一项 windows 服务可以在收到请求后打印 pdf 文件。它使用 PrintDocument,但对于某些打印机,它似乎忽略了我在代码中提供的打印机和托盘设置。
目前每台打印机都有几个托盘,它们都安装为单独的队列。对于某些打印机,我只需将 PrinterName 属性(PrintDocument 的)设置为队列的名称,它就可以正常工作。然而,一些打印机似乎忽略了这一点。我也试过设置纸张来源,但这似乎总是被忽略。
这是用于打印的代码:
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 文件始终包含内容,因此不能为空。
我更改了我的代码以改用 PrintQueue (https://msdn.microsoft.com/en-us/library/system.printing.printqueue(v=vs.110).aspx)。这似乎工作得很好,因为我可以直接调用队列而不是打印机。