2013-12-17 2 views
0

Я пытался конвертировать отчет SSRS в PDF и сохранять на свой локальный диск с помощью служб отчетов. Хотя я могу создать соответствующий pdf-файл, но содержимое файла отсутствует. Я проверил, что отчет, который я пытаюсь преобразовать, не является пустым. Внутри созданных PDF-файлов присутствует только заголовок. Ниже приведен код, который я использую:Сохранить отчет SSRS в формате pdf с использованием служб Reporting Services

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; 
Смежные вопросы