【问题标题】:Crystal Report | Printing | Default Printer水晶报表 |印刷 |默认打印机
【发布时间】:2011-09-15 18:36:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net winforms printing crystal-reports


    【解决方案1】:

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

    如果您可以尝试摆脱 FoxPro 应用程序 UI 进行打印机选择的方式。而是使用标准print dialog box 来选择打印机。

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

    这里是一个例子,显示 PrintDialog 使用SetParameterValue 方法设置一些参数,然后将报表文档发送到打印机

    // 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);
    }
    

    【讨论】:

    • @Frix,我的报告也使用了一些参数,MSDN中的示例不允许指定参数。请帮助!
    【解决方案2】:

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

    【讨论】:

    • 确实有用,虽然答案真的不是那么清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多