我創建了一個打印Crystal Report報表的ASP.NET應用程序。問題在於報告打印在服務器打印機上,因爲它是一個Web應用程序,所以我需要它在客戶機上打印。在ASP.NET C中打印客戶端上的Crystal報表#
我正在使用方法PrintToPrinter(1, false, 0, 0)
以便在沒有水晶報表查看器的情況下進行打印。
有誰知道是否有辦法讓它打印在客戶端?如果不;你建議如何在客戶端爲ASP.Net應用程序生成報告?
我創建了一個打印Crystal Report報表的ASP.NET應用程序。問題在於報告打印在服務器打印機上,因爲它是一個Web應用程序,所以我需要它在客戶機上打印。在ASP.NET C中打印客戶端上的Crystal報表#
我正在使用方法PrintToPrinter(1, false, 0, 0)
以便在沒有水晶報表查看器的情況下進行打印。
有誰知道是否有辦法讓它打印在客戶端?如果不;你建議如何在客戶端爲ASP.Net應用程序生成報告?
最好的辦法是設計你的頁面的「HTML打印版本」有聯繫電話:
javascript:window.print();
這裏是你需要做/嘗試獲得報告上打印的客戶端計算機是什麼
下面一行打開打印對話框不顯示打印預覽
crystalReportViewer1.PrintReport();
下面一行的打印直接發送到的ReportDocument默認打印機。
oReportDocument.PrintToPrinter(1,true,0,0);
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瀏覽器,它只能在IE中,如果客戶端已安裝爲默認的PDF閱讀器Acrobat Reader軟件。
自從我對Crystal執行任何操作以來,已經有一段時間了,但是看看它是否有將報表呈現爲PDF的選項。然後您可以將其發送給客戶端。它不會自動打印,但只要他們有PDF閱讀器,他們就可以在沒有安裝Crystal的情況下進行打印。 – 2012-03-01 19:40:06