C#PrintDocument PaperSource未应用于某些打印机

时间:2018-01-25 20:43:41

标签: c# printing

我写了一些简单的C#工具,在SpirePDF的帮助下打印PDF

在工具中,我可以选择打印机及其PaperTray

我这里有2台打印机,它们的代码工作正常(使用了正确的托盘)

在使用其他打印机的其他机器上,它不起作用,选择了正确的打印机,但PaperTray总是相同(手动进纸),无论我选择哪个托盘。

printDocument.PrinterSettings.PrinterName = PrinterSettings.InstalledPrinters[MyPrinterConfiguration.GetPrinterIndex(@"invoice_print")];
printDocument.DefaultPageSettings.PaperSource = printDocument.PrinterSettings.PaperSources[MyPrinterConfiguration.GetPrinterTrayIndex(@"invoice_print")];

MyPrinterConfiguration是一个字典,用于保存系统中托盘和打印机的索引。

是否有其他方法可以为此文档设置PaperSource?

我的打印机来自三星和兄弟 惠普和兄弟的其他人(两者都没有工作)所以它似乎不是一个驱动程序问题。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案: 在自行创建的PrinterSettings中设置PaperSource似乎不适用于某些打印机,但是当我制作Printdialog时,让用户选择设置(PaperSource,PaperType等)并使用theese设置(未更改)将它们应用于PrintDocument ,它适用于我所有的testet打印机。

我认为来自PrintDialog的PrinterSettings具有其他或更多特征,而不是我可以以编程方式设置。

if (printDialog.ShowDialog() == DialogResult.OK) {
            gpsMyPrintSettings.SetSettingsForType( "badge", (PrinterSettings) printDialog.PrinterSettings.Clone() );
        }


printDocument.PrinterSettings = gpsMyPrintSettings.GetSettingsForDocumentType( "badge" );
                printDocument.Print();