首页 文章

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

提问于
浏览
3

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

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

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

2 回答

  • 10

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

    如果您可以尝试远离FoxPro应用程序UI如何选择打印机 . 而是使用标准print dialog box来选择打印机 .

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

    这是一个使用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);
    }
    
  • 3

    上面的代码不再像宣传的那样工作which has been admitted by 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

相关问题