水晶报告| 印刷| 默认打印机

我正在创建一个应用程序,用户将打印我使用Crystal Report显示的发票。

用户向我展示了他目前使用ForPro制作的应用程序。 在该应用程序中,在“打印机选项”窗体下,可以看到当前安装的所有打印机,用户可以选择默认打印机。 发票开始后,用户按下打印按钮,然后有一个对话框询问否。 的副本。 输入后,发票直接打印,没有任何打印对话框。 如果用户想要再次更换打印机,他/她将在“打印机选项”表单中更改它。

我想知道Crystal Report中是否有类似的东西,并且需要有关如何处理它的指导。

查看ReportDocument.PrintToPrinter SAP Docs或MSDN Docs ,了解如何指定PrinterName,然后使用ReportDocument对象进行打印。

如果您可以尝试远离FoxPro应用程序UI如何选择打印机。 而是使用标准打印对话框选择打印机。

您应该注意,如果在将报告发送到打印机之前未设置PrinterName,它将使用水晶文件上的默认值。 不要与用户的OS默认打印机混淆。

下面是使用SetParameterValue方法显示PrintDialog设置一些参数然后将报告文档发送到打印机的示例

// Note: untested var dialog = new PrintDialog(); Nullable print = dialog.ShowDialog(); if (print.HasValue && print.Value) { var rd = new ReportDocument(); rd.Load("ReportFile.rpt"); rd.SetParameter("Parameter1", "abc"); rd.SetParameter("Parameter2", "foo"); rd.PrintOptions.PrinterName = dialog.PrinterSettings.PrinterName; rd.PrintToPrinter(1, false, 0, 0); } 

上面的代码不再像SAP承认的那样工作您需要将报告文档设置为ISCDReportClientDocument然后打印它。 这是一种更加健壮的方法,可确保打印作业不会进入默认打印机。 最后两行可以用此代码替换。

  CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions printReportOptions = new CrystalDecisions.ReportAppServer.Controllers.PrintReportOptions(); CrystalDecisions.ReportAppServer.Controllers.PrintOutputController printOutputController = new CrystalDecisions.ReportAppServer.Controllers.PrintOutputController(); CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument rptClientDoc; rptClientDoc = cryRtp.ReportClientDocument; printReportOptions.PrinterName = pDialog.PrinterSettings.PrinterName; rptClientDoc.PrintOutputController.PrintReport(printReportOptions); 

这是另一个很好的链接
http://mattruma.azurewebsites.net/?p=258