我写了一些简单的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?
我的打印机来自三星和兄弟 惠普和兄弟的其他人(两者都没有工作)所以它似乎不是一个驱动程序问题。
答案 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();