Aniket Banerjee Ответов: 2

Сохраните отчет SSRS в формате pdf с помощью служб Reporting Services


I've been trying to convert a SSRS Report to PDF and save to my local drive using the Reporting Web Services. Though I'm able to generate the corresponding pdf file but the contents of the file are missing. I've checked that the report I'm trying to convert is not an empty one. Only the header section is present there within the generated pdf files. Below is the code I'm using:


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;
        }
    }


Any help would highly be appreciated. Thanks.

2 Ответов

Рейтинг:
0

thatraja

Я видел, что вы разместили свой вопрос @ внизу этой статьи[^]. Подождите некоторое время.

А пока поищите другие места для решений, проверьте эти статьи
Создание управляемого данными PDF-файла на лету с помощью службы SQL server reporting service (SSRS)[^]
Создание PDF-файла с помощью службы отчетов SQL Server или элемента управления средством просмотра отчетов[^]


Рейтинг:
0

Freek Bos

Вы забыли добавить параметры в свой отчет.

Добавьте rsExec.SetExecutionParameters(_parameters, string.empty); после LoadReport.

_parameters = rs.GetReportParameters(_reportName, _historyID, _forRendering, _values, _credentials);

RE2005.ExecutionInfo ei = rsExec.LoadReport(_reportName, historyID);

rsExec.SetExecutionParameters(_parameters, string.empty);