2014-09-23 143 views
0

如何在客戶端打印機上從CrystalReport(ASP.NET)打印報告。如何在客戶端打印機上從ASP.NET CrystalReport打印

+0

您永遠不能在客戶端打印機上打印。它不屬於你。 _user_可以在他自己的打印機上打印。 – 2014-09-23 11:30:16

+0

不太好。使用PrintToPrinter或類似軟件打印到服務器很容易,但從您自己的代碼打印到客戶端並不那麼簡單。 – reckface 2014-09-23 13:04:45

回答

0

你有兩個選擇:

  1. 設置打印模式,以ActiveX或PDF,並保留Crystal報表查看器工具欄來處理它。
  2. 在iFrame中創建pdf,並使用JavaScript觸發打印命令。

爲了簡化用戶必須在每個客戶端上安裝的內容,我使用隱藏的pdf選項和單獨的按鈕打印到客戶端。

在aspx頁面上,我有一個asp文字,我使用1px x 1px的pdf嵌入對象進行填充,因此對用戶不可見。然後在pageload上調用printToPrinter方法。

// 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 
// ... 
// Display the pdf object 
_sb.AppendFormat("<object ID=\"pdfObject\" type=\"application/pdf\" data=\"{0}\" src=\"{0}\" style=\"width: {1}; height: {2}; ", _pdf2Name, _width, _height); 
_sb.AppendLine("z-index:1; display: block; border: 1px solid #cccccc; top: 0; left: 0; position: absolute;-+ \">"); 
_sb.Append("</object>"); 
pdfLiteral.Text = _sb.ToString(); 
pdfLiteral.Visible = true; 

// javascript 
// on document load call the printWithDialog function 
var code = function(){ 
try 
    { 
     var pdf = $get('pdfObject'); 
     if (pdf == null) 
      return; 
     try { 
      pdf.printWithDialog(); 
     } 
     catch (err) { 
      alert('Please Install Adobe Acrobat reader to use this feature'); 
     } 
    } 
    catch(err) 
    { 
    } 
    }; 
window.setTimeout(code, 1000); 
相關問題