【问题标题】:Printing Crystal Report on Client Side in ASP.NET C#在 ASP.NET C# 中的客户端打印水晶报表
【发布时间】:2012-03-01 19:04:09
【问题描述】:

我创建了一个 ASP.NET 应用程序,用于打印 Crystal Report 报表。问题是报告是在服务器打印机上打印的,因为它是一个 Web 应用程序,我需要它在客户端机器上打印。

我正在使用方法PrintToPrinter(1, false, 0, 0) 以便在没有水晶报表查看器的情况下打印它。

有人知道是否有办法在客户端打印它吗?如果不;您有什么建议在客户端为 ASP.Net 应用程序生成报告?

【问题讨论】:

  • 我已经有一段时间没有使用 Crystal 进行任何操作了,但看看它是否可以选择将报告呈现为 PDF。然后,您可以将其发送给客户端。它不会自动打印,但只要他们有 PDF 查看器,他们就可以在没有安装 Crystal 的情况下打印。

标签: c# asp.net printing crystal-reports client-side


【解决方案1】:

最好的方法是设计一个带有链接调用的页面的“HTML 可打印版本”:

javascript:window.print(); 

【讨论】:

    【解决方案2】:

    这是您需要做的/尝试在客户端机器上打印报告

    下面一行打开打印对话框进行打印而不显示打印预览

    crystalReportViewer1.PrintReport();
    

    下面一行直接将报表文档发送到默认打印机。

    oReportDocument.PrintToPrinter(1,true,0,0); 
    

    【讨论】:

      【解决方案3】:

      Crystal 报表查看器是一个服务器端控件,它并没有真正提供一种简单的方式来打印到客户端。我过去可以通过将报告导出为 PDF 来实现这一点,然后结合嵌入式 PDF 查看器和一些 JavaScript 打印 PDF。

      // On server side
      // Export to PDF
      Guid imageGuid = Guid.NewGuid();
      string pdfName = String.Format(@"{0}{1}{2}.pdf", pdfPath, reportName, imageGuid);
      // expport to unique filename
      report.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, pdfName);
      
      // Display the pdf object in a literal control (mine's called pdfLiteral)
      sb.AppendFormat("<object ID=\"pdfObject\" type=\"application/pdf\" data=\"{0}\" src=\"{0}\" style=\"width: 2px; height: 2px; ", pdfName);
      sb.AppendLine("z-index:1; display: block; top: 0; left: 0; position: absolute; \">");
      sb.Append("</object>");
      pdfLiteral.Text = sb.ToString();
      pdfLiteral.Visible = true;
      
      // client side
      // on document load call the printWithDialog function
       var code = function(){
          var pdf = document.getElementById('pdfObject');
          if (pdf == null)
              return;
          try {
              pdf.printWithDialog();
          }
          catch (err) {
              alert('Please Install Adobe Acrobat reader to use this feature');
          }
        };
      // window onload, with delay
      window.setTimeout(code, 1000);
      

      见:https://stackoverflow.com/a/25994086/474702

      注意:虽然这在 Chrome 中运行良好,但只有在客户端安装了 Acrobat 阅读器作为默认 PDF 查看器时才能在 IE 中运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多