コード例 #1
0
    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();
        }
    }
コード例 #2
0
    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();
            }
        }
    }