C# 在ASP.NETC中在客户端打印水晶报表#

C# 在ASP.NETC中在客户端打印水晶报表#,c#,asp.net,printing,crystal-reports,client-side,C#,Asp.net,Printing,Crystal Reports,Client Side,我创建了一个ASP.NET应用程序,在其中打印Crystal报表。问题是报告是在服务器打印机上打印的,因为它是一个Web应用程序,所以我需要它在客户机上打印 我正在使用方法PrintToPrinter(1,false,0,0),以便在没有crystal report viewer的情况下打印它 有人知道有没有办法在客户端打印出来吗?若否,;您建议如何在客户端为ASP.Net应用程序生成报告?最好的方法是设计页面的“HTML可打印版本”,并使用以下链接调用: javascript:window.p

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

我正在使用方法
PrintToPrinter(1,false,0,0)
,以便在没有crystal report viewer的情况下打印它

有人知道有没有办法在客户端打印出来吗?若否,;您建议如何在客户端为ASP.Net应用程序生成报告?

最好的方法是设计页面的“HTML可打印版本”,并使用以下链接调用:

javascript:window.print(); 

以下是您需要做/尝试在客户端计算机上打印报告的操作

下一行打开“打印”对话框以打印,而不显示打印预览

crystalReportViewer1.PrintReport();
下一行直接将reportdocument发送到默认打印机

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

Crystal report viewer是一个服务器端控件,它并没有真正提供一种简单的方式来打印到客户端。在过去,我已经能够通过将报告导出为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);
//在服务器端
//导出为PDF
Guid imageGuid=Guid.NewGuid();
string pdfName=string.Format(@“{0}{1}{2}.pdf”,pdfPath,reportName,imageGuid);
//导出到唯一文件名
report.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat,pdfName);
//在文本控件中显示pdf对象(我的称为pdfLiteral)
sb.格式(“”);
某人加上(“”);
pdfLiteral.Text=sb.ToString();
pdfLiteral.Visible=true;
//客户端
//加载文档时调用printWithDialog函数
变量代码=函数(){
var pdf=document.getElementById('pdfObject');
如果(pdf==null)
返回;
试一试{
pdf.printWithDialog();
}
捕捉(错误){
警报(“请安装Adobe Acrobat reader以使用此功能”);
}
};
//窗口加载,带延迟
设置超时(代码1000);
见:


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

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