从PrintDialog
类中选择打印选项后,我正在尝试将多个文档直接发送到打印机.
我需要检索选定的论文来源。不幸的是,我只能从打印机中找到所有纸张来源,而不是选定的纸张来源.
这是我的代码示例(缩短版本):
CrystalDecisions.CrystalReports.Engine.ReportDocument document;
//...
PrintDialog pDialog = new PrintDialog();
pDialog.ShowDialog();
document.PrintOptions.PrinterName = pDialog.PrinterSettings.PrinterName; //OK
//Here I need to set the papersource
//document.PrintOptions.PaperSource = ???
document.printToPrinter(pDialog.PrinterSettings.Copies, false, 0, 0)
我是否使用好对象来执行此操作?
注意:PageSetupDialog
没有为我提供打印机选项,因为我使用的是 Windows 7。
我用Hans Passant的评论找到了问题的答案。感谢他.
为了从PrintDialog
那里得到PaperSource
,我不得不给它设置一个假PrintDocument
.PrintDialog
不直接保留论文来源。相反,它会将PrintDialog.Document.DefaultPageSettings.PaperSource
设置为 .
下面是它的样子:
CrystalDecisions.CrystalReports.Engine.ReportDocument document;
PrintDialog pDialog = new PrintDialog();
pDialog.Document = new System.Drawing.Printing.PrintDocument();
pDialog.ShowDialog();
document.PrintOptions.PrinterName = pDialog.PrinterSettings.PrinterName;
document.PrintOptions.CustomPaperSource = pDialog.Document.DefaultPageSettings.PaperSource;
document.printToPrinter(pDialog.PrinterSettings.Copies, false, 0, 0);