public byte[] GenerarProgramaGeneral(Decimal ID_PROGRAMA_GENERAL, String URL_SERVER) { tools _tools = new tools(); //OBTENEMOS LA MAESTRA DEL PROGRAMA GENERAL Programa _programa = new Programa(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString()); DataTable tablaPrograma = _programa.ObtenerPrograGeneralMaestraPorId(ID_PROGRAMA_GENERAL); DataRow filaPrograma = tablaPrograma.Rows[0]; String html_encabezado = "<html>"; html_encabezado += "<head>"; html_encabezado += "</head>"; html_encabezado += "<body>"; String html_pie = "</body>"; html_pie += "</html>"; //En esta variable cargamos el documento plantilla StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\programa_general_rse_global.htm")); String html_formato_programa = html_encabezado + archivo_original.ReadToEnd(); archivo_original.Dispose(); archivo_original.Close(); String NOMBRE_PROGRAMA = filaPrograma["TITULO"].ToString().Trim(); //String URL_IMAGEN_PROGRAMA = "http://" + Request.ServerVariables["HTTP_HOST"].ToString() + filaPrograma["DIR_IMAGEN"].ToString().Replace(",",""); //String URL_SERVER String URL_IMAGEN_PROGRAMA = "http://" + URL_SERVER + filaPrograma["DIR_IMAGEN"].ToString().Replace("~", ""); String ANNO_PROGRAMA = filaPrograma["ANNO"].ToString().Trim(); String PARTE_INICIAL = filaPrograma["TEXTO_CABECERA"].ToString().Trim(); String PARTE_FINAL = filaPrograma["TEXTO_FINAL"].ToString().Trim(); html_formato_programa = html_formato_programa.Replace("[NOMBRE_PROGRAMA]", NOMBRE_PROGRAMA); html_formato_programa = html_formato_programa.Replace("[URL_IMAGEN_PROGRAMA]", URL_IMAGEN_PROGRAMA); html_formato_programa = html_formato_programa.Replace("[ANNO_PROGRAMA]", ANNO_PROGRAMA); html_formato_programa = html_formato_programa.Replace("[PARTE_INICIAL]", PARTE_INICIAL); html_formato_programa = html_formato_programa.Replace("[PARTE_FINAL]", PARTE_FINAL); //----------------------------------------------------------------------------------- //ahora vamos a generar una lista apropiada para mostrar los subprograma y actividades Dictionary<String, infoNodoProgramaGeneral> diccionarioPrograma = new Dictionary<String, infoNodoProgramaGeneral>(); CargarSubProgramasYActividadesDeProgramaGeneralEnLista(ID_PROGRAMA_GENERAL, 0, diccionarioPrograma, null); String html_titulo_herramientas_programa = "<div style=\"text-align: center; font-weight: bold; font-size:14px;\">"; html_titulo_herramientas_programa += "HERRAMIENTAS DEL PROGRAMA"; html_titulo_herramientas_programa += "</div>"; html_titulo_herramientas_programa += "<br>"; String html_herramientas = String.Empty; foreach(KeyValuePair<String, infoNodoProgramaGeneral> herramienta in diccionarioPrograma) { //key = NUMERO:TIPOHERRAMIENTA // NUMERO = ejemplo [1.2.3] o [1] o [1.1] // TIPOHERRAMIENTA = [SUBPROGRAMA] o [ACTIVIDAD] String[] numeracion_tipo = herramienta.Key.Split(':'); //determinnamos el nivel de numeracion segun el Lenght del arreglo resulktante: ejemplo [1.1.2] es de nivel 3 //esto es para determinar el nivel de sangria del parrafo String[] numeracion_separada = numeracion_tipo[0].Split('.'); html_herramientas += GetTablaHerramientas(numeracion_separada.Length, numeracion_tipo[0], numeracion_tipo[1], herramienta.Value); } //----------------------------------------------------------------------------------- html_formato_programa = html_formato_programa.Replace("[ESTRUCTURA_PROGRAMA]", html_herramientas); html_formato_programa += html_pie; //creamos un configuramos el documento de pdf //(tamaño de la hoja,margen izq, margen der, margin arriba margen abajo) iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(595, 842), 50, 50, 80, 45); using (MemoryStream streamArchivo = new MemoryStream()) { iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, streamArchivo); // Our custom Header and Footer is done using Event Handler pdfEvents PageEventHandler = new pdfEvents(); writer.PageEvent = PageEventHandler; // Define the page header // Define the page header if (Session["idEmpresa"].ToString() == "1") { PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_sertempo.png"); } else { PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_eficiencia.png"); } PageEventHandler.fechaImpresion = DateTime.Now; PageEventHandler.tipoDocumento = "entrevista"; document.Open(); //capturamos el archivo temporal del response String tempFile = Path.GetTempFileName(); //y lo llenamos con el html de la plantilla using (StreamWriter tempwriter = new StreamWriter(tempFile, false)) { tempwriter.Write(html_formato_programa); } //leeemos el archivo temporal y lo colocamos en el documento de pdf List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet()); foreach (IElement element in htmlarraylist) { if (element.Chunks.Count > 0) { if (element.Chunks[0].Content == "linea para paginacion de pdf") { document.NewPage(); } else { document.Add(element); } } else { document.Add(element); } } //limpiamos todo document.Close(); writer.Close(); return streamArchivo.ToArray(); } }
private void Cargar(Decimal ID_PROGRAMA_GENERAL, Int32 ANNO, String ID_AREA) { HiddenField_ID_PROGRAMA_GENERAL.Value = ID_PROGRAMA_GENERAL.ToString(); HiddenField_ANNO.Value = ANNO.ToString(); Programa _programa = new Programa(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString()); DataTable tablaPrograma = _programa.ObtenerPrograGeneralMaestraPorId(ID_PROGRAMA_GENERAL); if (tablaPrograma.Rows.Count <= 0) { if (_programa.MensajeError != null) { Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _programa.MensajeError, Proceso.Error); } else { Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información del ProgramaGeneral Seleccionado.", Proceso.Advertencia); } } else { DataRow filaPrograma = tablaPrograma.Rows[0]; TextBox_NombrePrograma.Text = filaPrograma["TITULO"].ToString().Trim(); CKEditor_PrimeraParte.Text = filaPrograma["TEXTO_CABECERA"].ToString().Trim(); CKEditorControl_ParteFinal.Text = filaPrograma["TEXTO_FINAL"].ToString().Trim(); DataTable tablaSubprogramasActividades = ObtenerEstructuraTablaPrograma(); Cargar(tablaSubprogramasActividades); Cargar_GridView_EsquemaPrograma_DesdeTabla(tablaSubprogramasActividades); if (DBNull.Value.Equals(filaPrograma["DIR_IMAGEN"]) == true) { HiddenField_ImagenPrograma.Value = ""; Image_Programa.ImageUrl = ""; } else { HiddenField_ImagenPrograma.Value = filaPrograma["DIR_IMAGEN"].ToString().Trim(); DibujarImagenPrograma(); } } }