I created an ASP.NET application where I print a Crystal Report report. The problem is that the report is printed at the Server Printer, and as it is a Web Application I need it to get printed at the client machine.
I am using the method PrintToPrinter(1, false, 0, 0)
in order to print it without a crystal report viewer.
Does anybody knows if there is a way to have it printed on the client side? If not; what do you recommend to generate reports on the client side for ASP.Net applications?
The Crystal report viewer is a server side control, and it doesn't really provide an easy way to print to client. I have been able to achieve this in the past by exporting the report to PDF, then with a combination of an embedded PDF viewer and some JavaScript, print the 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);
See: https://stackoverflow.com/a/25994086/474702
Note: although this works well in Chrome, it only works in IE if the client has Acrobat reader installed as the default PDF viewer.
最好的方法是设计一个页面的“HTML 可打印版本”,并带有一个链接调用:
javascript:window.print();
here is what you will need to do / try to get the report to print on the Client Machine
Below line opens up print dialog box to print without showing print preview
crystalReportViewer1.PrintReport();
Below line directly sends reportdocument to default printer.
oReportDocument.PrintToPrinter(1,true,0,0);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.