簡體   English   中英

在 ASP.NET C# 中在客戶端打印 Crystal Report

[英]Printing Crystal Report on Client Side in ASP.NET C#

我創建了一個 ASP.NET 應用程序,用於打印 Crystal Report 報表。 問題是報告是在服務器打印機上打印的,因為它是一個 Web 應用程序,我需要它在客戶端機器上打印。

我正在使用方法PrintToPrinter(1, false, 0, 0)以便在沒有水晶報告查看器的情況下打印它。

有誰知道是否有辦法在客戶端打印它? 如果不; 您建議在客戶端為 ASP.Net 應用程序生成報告嗎?

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 中運行。

最好的方法是設計一個頁面的“HTML 可打印版本”,並帶有一個鏈接調用:

javascript:window.print(); 

這是您需要做的/嘗試在客戶端機器上打印報告

下面一行打開打印對話框打印而不顯示打印預覽

crystalReportViewer1.PrintReport();

下面一行直接將報告文檔發送到默認打印機。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM