2013-12-17 81 views
0

我一直在嘗試使用報告Web服務將SSRS報告轉換爲PDF並保存到本地驅動器。雖然我能夠生成相應的pdf文件,但文件的內容不見了。我檢查了我想要轉換的報告不是空的。只有標題部分存在於生成的pdf文件中。以下是我正在使用的代碼:使用Reporting Services將SSRS報告另存爲pdf

protected void GeneratePDFFromReport(object sender, EventArgs e) 
    { 
     RS2005.ReportingService2005 rs; 
     RE2005.ReportExecutionService rsExec; 

     // Create a new proxy to the web service 
     rs = new RS2005.ReportingService2005(); 
     rsExec = new RE2005.ReportExecutionService(); 

     // Authenticate to the Web service using Windows credentials 
     rs.Credentials = new System.Net.NetworkCredential("username", "password", "domain"); 
     rsExec.Credentials = new System.Net.NetworkCredential("username", "password", "domain"); 
     //rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials; 

     rs.Url = "http://servername/reportserver/reportservice2005.asmx"; 
     rsExec.Url = "http://servername/reportserver/reportexecution2005.asmx"; 

     string historyID = null; 
     string deviceInfo = null; 
     string format = "PDF"; 
     Byte[] results; 
     string encoding = String.Empty; 
     string mimeType = "application/pdf"; 
     string extension = String.Empty; 
     RE2005.Warning[] warnings = null; 
     string[] streamIDs = null; 

     // Path of the Report - XLS, PDF etc. 
     string fileName = @"C:\Report\MemberReport.pdf"; 
     // Name of the report - Please note this is not the RDL file. 
     string _reportName = @"/ReportFolder/ReportName"; 
     string _historyID = null; 
     bool _forRendering = false; 
     RS2005.ParameterValue[] _values = null; 
     RS2005.DataSourceCredentials[] _credentials = null; 
     RS2005.ReportParameter[] _parameters = null; 

     try 
     { 
      _parameters = rs.GetReportParameters(_reportName, _historyID, _forRendering, _values, _credentials); 
      RE2005.ExecutionInfo ei = rsExec.LoadReport(_reportName, historyID); 

      results = rsExec.Render(format, deviceInfo, 
         out extension, out encoding, 
         out mimeType, out warnings, out streamIDs); 

      try 
      { 
       FileStream stream = File.Create(fileName, results.Length); 
       stream.Write(results, 0, results.Length); 
       stream.Close(); 
      } 
      catch { } 

      results = null; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

任何幫助將不勝感激。謝謝。

回答

0

假設SSRS正在使用的瀏覽器工作正常,請修改你發佈的代碼如下所示:

1)設備信息的字符串,請進行如下設置:

string deviceInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>"; //Initial value was null 

2)創建頭實例在使用網絡呼叫LoadReport之前:

ExecutionHeader execHeader = new ExecutionHeader(); 
RE2005.ExecutionHeaderValue = execHeader; 
相關問題