/// <summary> /// Salva a configuração de servidor de relatórios /// </summary> private void Salvar() { try { CFG_ServidorRelatorio srr = new CFG_ServidorRelatorio() { ent_id = _VS_ent_id , srr_id = _VS_srr_id , srr_nome = txtNomeServidor.Text , srr_descricao = txtDescricaoServidor.Text , srr_remoteServer = (ddlLocalProcessamento.SelectedIndex == 1) , srr_usuario = txtUsuario.Text , srr_dominio = txtDominio.Text , srr_senha = chkAlterarSenha.Checked ? UtilBO.CriptografarSenha(txtSenha.Text, eCriptografa.TripleDES) : String.Empty , srr_diretorioRelatorios = txtUrlRelatorios.Text , srr_pastaRelatorios = txtPastaRelatorios.Text , srr_situacao = Convert.ToInt16(ddlSituacao.SelectedIndex + 1) }; List <CFG_RelatorioServidorRelatorio> relatorios = (from ListItem row in chkRelatorios.Items let rlt = row.Value.ToString().Split(';') where row.Selected select new CFG_RelatorioServidorRelatorio { ent_id = srr.ent_id , srr_id = srr.srr_id , rlt_id = Convert.ToInt32(rlt[0]) , IsNew = true } ).ToList(); if (CFG_ServidorRelatorioBO.SalvarServidorRelatorio(srr, relatorios)) { lblMensagemErro.Text = UtilBO.GetErroMessage("Servidor de relatórios salvo com sucesso.", UtilBO.TipoMensagem.Sucesso); AlterarCheckSenha(false); ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Update, "ent_id: " + _VS_ent_id.ToString() + " , srr_id: " + _VS_srr_id); } } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMensagemErro.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o servidor de relatórios.", UtilBO.TipoMensagem.Erro); } }
/// <summary> /// Carrega os dados do servidor de relatórios /// </summary> private void CarregarEntidade() { _VS_ent_id = __SessionWEB.__UsuarioWEB.Usuario.ent_id; CFG_ServidorRelatorio srr = CFG_ServidorRelatorioBO.CarregarServidorRelatorioPorEntidade(_VS_ent_id); if (srr != null) { _VS_srr_id = srr.srr_id; txtNomeServidor.Text = srr.srr_nome; txtDescricaoServidor.Text = srr.srr_descricao; ddlLocalProcessamento.SelectedIndex = srr.srr_remoteServer ? 1 : 0; txtUsuario.Text = srr.srr_usuario; txtDominio.Text = srr.srr_dominio; txtUrlRelatorios.Text = srr.srr_diretorioRelatorios; txtPastaRelatorios.Text = srr.srr_pastaRelatorios; ddlSituacao.SelectedIndex = (srr.srr_situacao - 1); AlterarSelecaoComboLocalProcessamento(srr.srr_remoteServer); } else { AlterarCheckSenha(true); } }
public void ProcessRequest(HttpContext context) { if (context.Request.IsAuthenticated) { try { var tipRel = HttpUtility.UrlDecode(HttpContext.Current.Request["tipRel"]); var parametrosRel = HttpUtility.UrlDecode(HttpContext.Current.Request["params"]); int rlt_id; if (int.TryParse(tipRel, out rlt_id)) { string mimeType; string encoding; string fileNameExtension; Warning[] warnings; string[] streamids; byte[] exportBytes; //Recebe os dados do relatório CFG_Relatorio rpt = new CFG_Relatorio() { rlt_id = rlt_id }; CFG_RelatorioBO.GetEntity(rpt); if (rpt.IsNew) { throw new ValidationException("Relatório não encontrado."); } //Configurações do Relatório CFG_ServidorRelatorio rptServer = CFG_ServidorRelatorioBO.CarregarServidorRelatorioPorEntidade( this.__SessionWEB.__UsuarioWEB.Usuario.ent_id , ApplicationWEB.AppMinutosCacheLongo ); if (rptServer.IsNew) { throw new ValidationException("O servidor de relatório não está configurado."); } //Carrega os parâmetros do relatório MSReportServerParameters param = new MSReportServerParameters(parametrosRel); //Checa o modo de processamento do servidor if (rptServer.srr_remoteServer) { Microsoft.Reporting.WebForms.ReportViewer ReportViewerRel = new Microsoft.Reporting.WebForms.ReportViewer(); //Configura o reportviewer ReportViewerRel.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote; Uri urlReport = new Uri(rptServer.srr_diretorioRelatorios); ReportViewerRel.ServerReport.ReportServerUrl = urlReport; ReportViewerRel.ServerReport.ReportServerCredentials = new MSReportServerCredentials(rptServer.srr_usuario, rptServer.srr_senha, rptServer.srr_dominio); ReportViewerRel.ServerReport.ReportPath = String.Concat(rptServer.srr_pastaRelatorios, rpt.rlt_nome); ReportViewerRel.ServerReport.SetParameters(param.getReportParameters()); //Carrega o relatório exportBytes = ReportViewerRel.ServerReport.Render("PDF", null, out mimeType, out encoding, out fileNameExtension, out streamids, out warnings); #region PDF Sharp //MemoryStream fs = new MemoryStream(exportBytes); //PdfDocument document = PdfReader.Open(fs, PdfDocumentOpenMode.Modify); //PdfDictionary dictJS = new PdfDictionary(document); //dictJS.Elements["/S"] = new PdfName("/JavaScript"); //dictJS.Elements["/JS"] = new PdfString("this.print(true);\r"); //document.Internals.AddObject(dictJS); //document.Internals.Catalog.Elements["/OpenAction"] = PdfInternals.GetReference(dictJS); //MemoryStream ms = new MemoryStream(); //document.Save(ms, false); #endregion #region ITextSharp MemoryStream ms = new MemoryStream(); PdfReader reader = new PdfReader(exportBytes); Document document = null; PdfCopy writer = null; int n = reader.NumberOfPages; document = new Document(reader.GetPageSizeWithRotation(1)); writer = new PdfCopy(document, ms); document.Open(); PdfImportedPage page; for (int i = 0; i < n;) { ++i; page = writer.GetImportedPage(reader, i); writer.AddPage(page); } PdfAction jAction = PdfAction.JavaScript("this.print(true);\r", writer); writer.AddJavaScript(jAction); document.Close(); writer.Close(); #endregion HttpResponse response = HttpContext.Current.Response; response.ClearContent(); response.ClearHeaders(); response.Buffer = true; response.Cache.SetCacheability(HttpCacheability.Private); response.ContentType = "application/pdf"; response.AddHeader("Content-Disposition", "inline;"); response.BinaryWrite(ms.ToArray()); ms.Close(); HttpContext.Current.ApplicationInstance.CompleteRequest(); response.End(); } } } catch (ThreadAbortException) { } catch (Exception ex) { MSTech.GestaoEscolar.Web.WebProject.ApplicationWEB._GravaErro(ex); } } }