public HttpResponseMessage RelPlanoDeAgenda(DateTime datainicio, DateTime datatermino, int?idprofissional, int?idUnidade) { try { if (datainicio > datatermino) { throw new Exception("Periodo inválido"); } var lista = _serviceRelatorio.RelPlanoDeAgenda(datainicio, datatermino, idprofissional, idUnidade, base.GetUsuarioLogado().IdClinica); string profissional = ""; string unidade = ""; if (idprofissional > 0) { profissional = _serviceCadastro.ObterFuncionarioById((int)idprofissional).Pessoa.Nome; } else { profissional = "Todos"; } if (idUnidade > 0) { unidade = _serviceCadastro.ObterUnidadeAtendimentoPorId((int)idUnidade).Nome; } else { unidade = "Todas"; } //vinculando dataset ao objeto relat var ds = new ReportDataSource(); ds.Name = "dsdados"; ds.Value = lista.OrderBy(x => x.Data); var report = new LocalReport() { ReportPath = AppDomain.CurrentDomain.BaseDirectory + "Report/RelatorioPlanoAgenda.rdlc" }; report.DataSources.Add(ds); report.Refresh(); ReportParameter[] parametros = new ReportParameter[] { new ReportParameter("usuario", base.GetUsuarioLogado().Nome), new ReportParameter("profissional", profissional), new ReportParameter("unidade", unidade), new ReportParameter("datainicio", datainicio.ToString("dd/MM/yyyy")), new ReportParameter("datatermino", datatermino.ToString("dd/MM/yyyy")) }; report.SetParameters(parametros); //configurações da página ex: margin, top, left ... string deviceInfo = "<DeviceInfo>" + "<OutputFormat>PDF</OutputFormat>" + "<PageWidth>29.7cm</PageWidth>" + "<PageHeight>21cm</PageHeight>" + "<MarginTop>0.5cm</MarginTop>" + "<MarginLeft>0.5cm</MarginLeft>" + "<MarginRight>0.5cm</MarginRight>" + "<MarginBottom>0.5cm</MarginBottom>" + "</DeviceInfo>"; string mimeType = ""; string encoding = ""; string filenameExtension = ""; string[] streams = null; Microsoft.Reporting.WebForms.Warning[] warnings = null; byte[] bytes = report.Render("PDF", deviceInfo, out mimeType, out encoding, out filenameExtension, out streams, out warnings); HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new ByteArrayContent(bytes); result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(mimeType); return(result); } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message)); } }