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

|| 我正在制作一个应用程序,用户可以在其中打印要使用Crystal Report显示的发票。 用户向我展示了他当前使用ForPro开发的应用程序。在该应用程序中,在“打印机选项”表单下,可以看到当前安装的所有打印机,并且用户可以选择默认打印机。生成发票后,用户按下打印按钮,然后出现一个对话框,询问否。份。输入后,将直接打印发票,而无需任何“打印”对话框。如果用户想再次更改打印机,他/她将在“打印机选项”表格中进行更改。 我想知道在Crystal Report中是否可以进行类似的操作,并且需要有关如何进行处理的指南。     
已邀请:
        查看ReportDocument.PrintToPrinter SAP Docs或MSDN Docs,了解如何指定PrinterName,然后使用ReportDocument对象进行打印。 如果您可以尝试摆脱FoxPro应用程序UI进行打印机选择的方式。而是使用标准打印对话框来选择打印机。 您应注意,如果在将报告发送到打印机之前未设置PrinterName,它将使用默认文件。不要与用户的操作系统默认打印机混淆。 这是一个使用SetParameterValue方法显示PrintDialog设置一些参数,然后将报告文档发送到打印机的示例
// Note: untested
var dialog = new PrintDialog();

Nullable<bool> 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     

要回复问题请先登录注册