/// <summary>
    /// hecha por cesar pulido
    /// el dia 15 de abril de 2013
    /// para generar pdf de cuenta apertura
    /// </summary>
    /// <param name="FECHA_APERTURA"></param>
    /// <param name="NOMBRE_BANCO"></param>
    /// <param name="NOMBRE_TRABAJADOR"></param>
    /// <param name="NUMERO_DOCUMENTO_IDENTIDAD"></param>
    /// <param name="NOMBRE_JEFE"></param>
    /// <param name="CARGO_JEFE"></param>
    /// <param name="TELEFONO_JEFE"></param>
    /// <param name="NUMERO_ROTATIVO"></param>
    /// <param name="CODIGO_NOMINA"></param>
    /// <param name="NUMERO_CUENTA"></param>
    /// <returns></returns>
    public byte[] GenerarPDFAperturaBancoBogotaCreditRotativo(DateTime FECHA_APERTURA,
        String NOMBRE_BANCO,
        String NOMBRE_TRABAJADOR,
        String NUMERO_DOCUMENTO_IDENTIDAD,
        String NOMBRE_JEFE,
        String CARGO_JEFE,
        String TELEFONO_JEFE,
        String NUMERO_ROTATIVO,
        String CODIGO_NOMINA, 
        String NUMERO_CUENTA)
    {
        String html_encabezado = "<html>";
        html_encabezado += "<head>";
        html_encabezado += "</head>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        //variables obtenidas de la session
        String EMPRESA;
        String NIT_EMPRESA;
        if (Session["idEmpresa"].ToString() == "1")
        {
            EMPRESA = tabla.VAR_NOMBRE_SERTEMPO;
            NIT_EMPRESA = tabla.VAR_NIT_SERTEMPO;
        }
        else
        {
            EMPRESA = tabla.VAR_NOMBRE_EYS;
            NIT_EMPRESA = tabla.VAR_NIT_EYS;
        }

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\apertura_cuenta.htm"));

        String html_formato_apertura = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        html_formato_apertura = html_formato_apertura.Replace("[FECHA_APERTURA]", FECHA_APERTURA.ToLongDateString());
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_BANCO]", NOMBRE_BANCO);
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_TRABAJADOR]", NOMBRE_TRABAJADOR);
        html_formato_apertura = html_formato_apertura.Replace("[NUMERO_DOCUMENTO_IDENTIDAD]", NUMERO_DOCUMENTO_IDENTIDAD);
        html_formato_apertura = html_formato_apertura.Replace("[EMPRESA]", EMPRESA);
        html_formato_apertura = html_formato_apertura.Replace("[NIT_EMPRESA]", NIT_EMPRESA);
        html_formato_apertura = html_formato_apertura.Replace("[NUMERO_ROTATIVO]", NUMERO_ROTATIVO);
        html_formato_apertura = html_formato_apertura.Replace("[CODIGO_NOMINA]", CODIGO_NOMINA);
        html_formato_apertura = html_formato_apertura.Replace("[NUMERO_CUENTA]", NUMERO_CUENTA);

        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_JEFE]", NOMBRE_JEFE);
        html_formato_apertura = html_formato_apertura.Replace("[CARGO_JEFE]", CARGO_JEFE);
        html_formato_apertura = html_formato_apertura.Replace("[TELEFONO_JEFE]", TELEFONO_JEFE);

        html_formato_apertura += 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), 65, 65, 160, 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 = "apertura_cuenta";

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

            //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();
        }
    }
    /// <summary>
    /// hecho por cesar puldio
    /// el dia 16 de abril de 2013
    /// para generar pdf de apertura de cuenta
    /// </summary>
    public byte[] GenerarPDFAperturaBancoAvvilla(String CIUDAD,
        DateTime FECHA_APERTURA,
        String NOMBRE_BANCO,
        String NOMBRE_EMPLEADO,
        String NUMERO_IDENTIFICACION_EMPLEADO,
        String NOMBRE_COMPLETO_EMPLEADO,
        Decimal ID_SOLICITUD,
        Decimal ID_REQUERIMIENTO,
        String NOMBRE_JEFE,
        String CARGO_JEFE,
        String CUENTA_MATRIZ)
    {
        String html_encabezado = "<html>";
        html_encabezado += "<head>";
        html_encabezado += "</head>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        //variables obtenidas de la session
        String NOMBRE_EMPRESA;
        String NIT_EMPRESA;
        if (Session["idEmpresa"].ToString() == "1")
        {
            NOMBRE_EMPRESA = tabla.VAR_NOMBRE_SERTEMPO;
            NIT_EMPRESA = tabla.VAR_NIT_SERTEMPO;
        }
        else
        {
            NOMBRE_EMPRESA = tabla.VAR_NOMBRE_EYS;
            NIT_EMPRESA = tabla.VAR_NIT_EYS;
        }

        String FECHA_INGRESO;
        String SUELDO_BASICO;
        String TIPO_CONTRATO;
        Decimal ID_PERFIL;
        String CARGO_EMPLEADO;

        //FECHA DE INGRESO DESDE SOLICITUD DE INGRESO
        radicacionHojasDeVida _rad = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaRad = _rad.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
        DataRow filaRad = tablaRad.Rows[0];

        try
        {
            FECHA_INGRESO = Convert.ToDateTime(filaRad["F_ING_C"]).ToShortDateString();
        }
        catch
        {
            FECHA_INGRESO = "Desconocida.";
        }

        //obtenermos de la requisicion el salario
        //cargo,
        //tipo contrato,
        //y no me acuerdo que mas.
        requisicion _req = new requisicion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaReq = _req.ObtenerComRequerimientoPorIdRequerimiento(ID_REQUERIMIENTO);
        DataRow filaReq = tablaReq.Rows[0];

        try
        {
            SUELDO_BASICO = Convert.ToDecimal(filaReq["SALARIO"]).ToString("C");
        }
        catch
        {
            SUELDO_BASICO = "Desconocido.";
        }

        if (DBNull.Value.Equals(filaReq["NOMBRE_HORARIO"]) == false)
        {
            TIPO_CONTRATO = filaReq["NOMBRE_HORARIO"].ToString().Trim();
        }
        else
        {
            TIPO_CONTRATO = "Desconocido.";
        }

        try
        {
            ID_PERFIL = Convert.ToDecimal(filaReq["REGISTRO_PERFIL"]);
            perfil _perfil = new perfil(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaPerfil = _perfil.ObtenerPorRegistro(ID_PERFIL);
            DataRow filaPerfil = tablaPerfil.Rows[0];

            if (DBNull.Value.Equals(filaPerfil["NOM_OCUPACION"]) == false)
            {
                CARGO_EMPLEADO = filaPerfil["NOM_OCUPACION"].ToString().Trim();
            }
            else
            {
                CARGO_EMPLEADO = "Desconocido.";
            }
        }
        catch
        {
            CARGO_EMPLEADO = "Desconocido.";
        }

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\apertura_cuenta_avvillas.htm"));

        String html_formato_apertura = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        html_formato_apertura = html_formato_apertura.Replace("[CIUDAD]", CIUDAD);
        html_formato_apertura = html_formato_apertura.Replace("[FECHA_APERTURA]", FECHA_APERTURA.ToLongDateString());
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_BANCO]", NOMBRE_BANCO);
        html_formato_apertura = html_formato_apertura.Replace("[NIT_EMPRESA]", NIT_EMPRESA);
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_EMPRESA]", NOMBRE_EMPRESA);
        html_formato_apertura = html_formato_apertura.Replace("[CUENTA_MATRIZ]", CUENTA_MATRIZ);

        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_EMPLEADO]", NOMBRE_EMPLEADO);
        html_formato_apertura = html_formato_apertura.Replace("[NUMERO_IDENTIFICACION_EMPLEADO]", NUMERO_IDENTIFICACION_EMPLEADO);
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_COMPLETO_EMPLEADO]", NOMBRE_COMPLETO_EMPLEADO);

        html_formato_apertura = html_formato_apertura.Replace("[FECHA_INGRESO]", FECHA_INGRESO);
        html_formato_apertura = html_formato_apertura.Replace("[SUELDO_BASICO]", SUELDO_BASICO);
        html_formato_apertura = html_formato_apertura.Replace("[TIPO_CONTRATO]", TIPO_CONTRATO);
        html_formato_apertura = html_formato_apertura.Replace("[CARGO_EMPLEADO]", CARGO_EMPLEADO);

        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_JEFE]", NOMBRE_JEFE);
        html_formato_apertura = html_formato_apertura.Replace("[CARGO_JEFE]", CARGO_JEFE);

        html_formato_apertura += 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), 55, 55, 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 = "apertura_cuenta_avvillas";

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

            //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();
        }
    }
    public byte[] GenerarPDFAperturaBancoBancolombia(String CIUDAD, 
        DateTime FECHA_APERTURA,
        String NOMBRE_BANCO,
        String NUM_CONVENIO,
        String CUENTA_SERTEMPO,
        String NOMBRE_COMPLETO_EMPLEADO,
        String NUMERO_IDENTIFICACION_EMPLEADO,
        String CARGO_EMPLEADO,
        Decimal ID_REQUERIMIENTO,
        String EMPRESA_USUARIA,
        String NOMBRE_EMPRESA,

        String NOMBRE_JEFE)
    {
        String SUELDO_BASICO;
        String html_encabezado = "<html>";
        html_encabezado += "<head>";
        html_encabezado += "</head>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        //obtenermos de la requisicion el salario
        //cargo,
        //tipo contrato,
        //y no me acuerdo que mas.
        requisicion _req = new requisicion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaReq = _req.ObtenerComRequerimientoPorIdRequerimiento(ID_REQUERIMIENTO);
        DataRow filaReq = tablaReq.Rows[0];

        try
        {
            SUELDO_BASICO = Convert.ToDecimal(filaReq["SALARIO"]).ToString("C");
        }
        catch
        {
            SUELDO_BASICO = "Desconocido.";
        }

        ////variables obtenidas de la session
        //String EMPRESA;
        //String NIT_EMPRESA;
        //if (Session["idEmpresa"].ToString() == "1")
        //{
        //    EMPRESA = tabla.VAR_NOMBRE_SERTEMPO;
        //    NIT_EMPRESA = tabla.VAR_NIT_SERTEMPO;
        //}
        //else
        //{
        //    EMPRESA = tabla.VAR_NOMBRE_EYS;
        //    NIT_EMPRESA = tabla.VAR_NIT_EYS;
        //}

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\apertura_cuenta_bancolombia.htm"));

        String html_formato_apertura = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        html_formato_apertura = html_formato_apertura.Replace("[CIUDAD]", CIUDAD);
        html_formato_apertura = html_formato_apertura.Replace("[FECHA_APERTURA]", FECHA_APERTURA.ToLongDateString());
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_BANCO]", NOMBRE_BANCO);
        html_formato_apertura = html_formato_apertura.Replace("[NUM_CONVENIO]", NUM_CONVENIO);
        html_formato_apertura = html_formato_apertura.Replace("[CUENTA_SERTEMPO]", CUENTA_SERTEMPO);
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_COMPLETO_EMPLEADO]", NOMBRE_COMPLETO_EMPLEADO);
        html_formato_apertura = html_formato_apertura.Replace("[NUMERO_IDENTIFICACION_EMPLEADO]", NUMERO_IDENTIFICACION_EMPLEADO);
        html_formato_apertura = html_formato_apertura.Replace("[CARGO_EMPLEADO]", CARGO_EMPLEADO);
        html_formato_apertura = html_formato_apertura.Replace("[SUELDO_BASICO]", SUELDO_BASICO);
        html_formato_apertura = html_formato_apertura.Replace("[EMPRESA_USUARIA]", EMPRESA_USUARIA);
        html_formato_apertura = html_formato_apertura.Replace("[NOMBRE_JEFE]", NOMBRE_JEFE);

        html_formato_apertura += 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), 65, 65, 160, 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 = "apertura_cuenta";

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

            //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();
        }
    }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA 19 DE DICIEMBRE DE 2012
    /// PARA OBTENER UN ARCHIVO CON TEXTO DE CONTRATO NO ENCONTRADO.
    /// </summary>
    /// <returns></returns>
    private byte[] GenerarPDFSinContrato()
    {
        String html_encabezado = "<html>";
        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\sincontrato.htm"));

        String html_formato_sincontrato = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        html_formato_sincontrato += 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;

            PageEventHandler.tipoDocumento = "desconocido";

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

            //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();
        }
    }
    /// <summary>
    /// hecho por cesar pulido
    /// el dia 19 de diciembre de 2012
    /// para generar el archivo del contrato
    /// </summary>
    /// <param name="filaInfoContrato"></param>
    /// <returns></returns>
    private byte[] ImprimirContratoO_L_COMPLETO(DataRow filaInfoContrato)
    {
        tools _tools = new tools();

        Boolean CarnetIncluido = false;

        //En esta variable cargamos el documento plantilla segun la empresa de session
        StreamReader archivo;

        if (Session["idEmpresa"].ToString() == "1")
        {
            if (CarnetIncluido == true)
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_sertempo_obra_labor.htm"));
            }
            else
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_sertempo_obra_labor_carnet_aparte.htm"));
            }
        }
        else
        {
            if (CarnetIncluido == true)
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_eys_labor_contratada.htm"));
            }
            else
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_eys_labor_contratada_carnet_aparte.htm"));
            }
        }

        String html = archivo.ReadToEnd();

        archivo.Dispose();
        archivo.Close();

        if (Session["idEmpresa"].ToString() == "1")
        {
            html = html.Replace("[DIR_LOGO_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/logo_sertempo.png");
            html = html.Replace("[MENSAJE_LOGO]", "SERVICIOS TEMPORALES PROFESIONALES");
            html = html.Replace("[NOMBRE_EMPLEADOR]", tabla.VAR_NOMBRE_SERTEMPO);
            html = html.Replace("[DOMICILO_EMPLEADOR]", tabla.VAR_DOMICILIO_SERTEMPO);
            html = html.Replace("[DESCRIPCION_CARGO]", filaInfoContrato["DSC_FUNCIONES"].ToString().Trim().ToUpper());
            html = html.Replace("[SERVICIO_RESPECTIVO]", filaInfoContrato["DESCRIPCION"].ToString().Trim().ToUpper());
            html = html.Replace("[EMPRESA_USUARIA]", filaInfoContrato["RAZ_SOCIAL"].ToString().Trim().ToUpper());
            html = html.Replace("[DIR_FIRMA_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/firma_contrato_empleador_sertempo.jpg");
        }
        else
        {
            html = html.Replace("[DIR_LOGO_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/logo_eficiencia.jpg");
            html = html.Replace("[NOMBRE_EMPLEADOR]", tabla.VAR_NOMBRE_EYS);
            html = html.Replace("[DOMICILO_EMPLEADOR]", tabla.VAR_DOMICILIO_EYS);
            html = html.Replace("[FUNCION_CARGO]", filaInfoContrato["DSC_FUNCIONES"].ToString().Trim().ToUpper());
            html = html.Replace("[ACTIVIDAD_CONTRATADA]", filaInfoContrato["DSC_FUNCIONES"].ToString().Trim().ToUpper());
            html = html.Replace("[EMPRESA_DESTACA]", filaInfoContrato["RAZ_SOCIAL"].ToString().Trim().ToUpper());
            html = html.Replace("[DIR_FIRMA_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/firma_contrato_empleador_eys.jpg");
        }

        html = html.Replace("[CARGO_TRABAJADOR]", filaInfoContrato["NOM_OCUPACION"].ToString().Trim().ToUpper());
        html = html.Replace("[NOMBRE_TRABAJADOR]", filaInfoContrato["APELLIDOS"].ToString().Trim().ToUpper() + " " + filaInfoContrato["NOMBRES"].ToString().Trim().ToUpper());
        html = html.Replace("[TIPO_DOCUMENTO_IDENTIDAD]", filaInfoContrato["TIP_DOC_IDENTIDAD"].ToString().Trim().ToUpper());
        html = html.Replace("[DOC_IDENTIFICACION]", filaInfoContrato["NUM_DOC_IDENTIDAD"].ToString().Trim().ToUpper());
        html = html.Replace("[SALARIO]", Convert.ToDecimal(filaInfoContrato["SALARIO"]).ToString());
        html = html.Replace("[PERIODO_PAGO]", "??");
        html = html.Replace("[FECHA_INICIACION]", Convert.ToDateTime(filaInfoContrato["FECHA_INICIA"]).ToLongDateString());
        html = html.Replace("[CARNE_VALIDO_HASTA]", Convert.ToDateTime(filaInfoContrato["FECHA_TERMINA"]).ToLongDateString());

        //esto es para obtener la ciudad de impresión del contrato
        //OBTENEMOS LA CIUDAD DE FIRMA, DESDE LA CIUDAD DEL USU_LOG
        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaInfoUsuario = _usuario.ObtenerInicioSesionPorUsuLog(Session["USU_LOG"].ToString());
        if (tablaInfoUsuario.Rows.Count <= 0)
        {
            html = html.Replace("[CIUDAD_FIRMA]", "Desconocida");
        }
        else
        {
            DataRow filaInfoUsuario = tablaInfoUsuario.Rows[0];
            html = html.Replace("[CIUDAD_FIRMA]", filaInfoUsuario["NOMBRE_CIUDAD"].ToString());
        }

        DateTime fechaHoy = DateTime.Now;
        html = html.Replace("[DIAS_FIRMA]", fechaHoy.Day.ToString());
        html = html.Replace("[MES_FIRMA]", _tools.obtenerNombreMes(fechaHoy.Month));
        html = html.Replace("[ANNO_FIRMA]", fechaHoy.Year.ToString());

        //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(612, 936), 15, 15, 5, 15);

        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;

            PageEventHandler.tipoDocumento = "contrato";

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

            //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();
        }
    }
    protected void Button_CLAUSULAS_Click(object sender, EventArgs e)
    {
        Decimal ID_CONTRATO = Convert.ToDecimal(HiddenField_ID_CONTRATO.Value);

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoClausulas = _registroContrato.ObtenerInfoParaImprimirClausulas(Convert.ToDecimal(HiddenField_ID_CONTRATO.Value));

        if (tablaInfoClausulas.Rows.Count <= 0)
        {
            if (_registroContrato.MensajeError != null)
            {
                Informar(Panel_MENSAJE_IMPRESIONES_BASICAS, Label_MENSAJE_IMPRESIONES_BASICAS, _registroContrato.MensajeError, Proceso.Error);
            }
            else
            {
                DataTable tablaCon = _registroContrato.ObtenerConRegContratosPorRegistro(Convert.ToInt32(ID_CONTRATO));
                DataRow fila = tablaCon.Rows[0];
                _registroContrato.ActualizarConRegContratosImpresos(Convert.ToInt32(ID_CONTRATO), fila["CONTRATO_IMPRESO"].ToString(), "S");

                Informar(Panel_MENSAJE_IMPRESIONES_BASICAS, Label_MENSAJE_IMPRESIONES_BASICAS, "ADVERTENCIA: No existen clausulas para este contrato y perfil, puede continuar, con los siguientes tramites.", Proceso.Error);
            }
        }
        else
        {
            tools _tools = new tools();

            DataTable tablaCon = _registroContrato.ObtenerConRegContratosPorRegistro(Convert.ToInt32(ID_CONTRATO));
            DataRow fila = tablaCon.Rows[0];
            _registroContrato.ActualizarConRegContratosImpresos(Convert.ToInt32(ID_CONTRATO), fila["CONTRATO_IMPRESO"].ToString(), "S");

            StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\clausulas.htm"));

            String html_clausula = archivo_original.ReadToEnd();

            archivo_original.Dispose();
            archivo_original.Close();

            String html_completo = "<html><body>";

            Int32 contadorClausulas = 0;

            foreach (DataRow filaClausula in tablaInfoClausulas.Rows)
            {
                if (contadorClausulas == 0)
                {
                    html_completo = html_clausula;
                }
                else
                {
                    html_completo += "<div>linea para paginacion de pdf</div>";
                    html_completo += html_clausula;
                }

                if (Session["idEmpresa"].ToString() == "1")
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_SERTEMPO);
                }
                else
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_EYS);
                }
                html_completo = html_completo.Replace("[NOMBRE_TRABAJADOR]", filaClausula["NOMBRES"].ToString().Trim() + " " + filaClausula["APELLIDOS"].ToString().Trim());
                html_completo = html_completo.Replace("[NOMBRE_CLAUSULA]", filaClausula["NOMBRE"].ToString().Trim());
                html_completo = html_completo.Replace("[ENCABEZADO_CLAUSULA]", filaClausula["ENCABEZADO"].ToString().Trim());
                html_completo = html_completo.Replace("[CONTENIDO_CLAUSULA]", filaClausula["DESCRIPCION"].ToString().Trim());
                html_completo = html_completo.Replace("[DIAS]", DateTime.Now.Day.ToString());
                html_completo = html_completo.Replace("[MES]", _tools.obtenerNombreMes(DateTime.Now.Month));
                html_completo = html_completo.Replace("[ANNO]", DateTime.Now.Year.ToString());

                contadorClausulas += 1;
            }

            html_completo += "</body></html>";

            String filename = "clausulas_contrato_" + ID_CONTRATO.ToString();

            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + filename + ".pdf");

            Response.Clear();
            Response.ContentType = "application/pdf";

            iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(595, 842), 40, 40, 80, 40);

            iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);

            pdfEvents PageEventHandler = new pdfEvents();
            writer.PageEvent = PageEventHandler;

            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 = "clausula";

            document.Open();

            String tempFile = Path.GetTempFileName();

            using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
            {
                tempwriter.Write(html_completo);
            }

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

            document.Close();
            writer.Close();

            Response.End();

            File.Delete(tempFile);
        }
    }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA 19 DE DICIEMBRE DE 2012
    /// PARA OBTENER EL ARCHIVO CON LA INFORMACION DE LAS AFICLIACIONES DEL EMPLEADO
    /// </summary>
    /// <param name="ID_SOLICITUD"></param>
    /// <param name="ID_REQUERIMIENTO"></param>
    /// <param name="ID_EMPLEADO"></param>
    /// <returns></returns>
    public byte[] GenerarPDFAfiliaciones(Decimal ID_SOLICITUD, Decimal ID_REQUERIMIENTO, Decimal ID_EMPLEADO, Decimal ID_CONTRATO)
    {
        tools _tools = new tools();

        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoContrato = _registroContrato.obtenerInfoNomEmpleadoPorIdSolicitudIdRequerimiento(ID_SOLICITUD, ID_REQUERIMIENTO, ID_EMPLEADO);

        DataRow filaInfoContrato = tablaInfoContrato.Rows[0];

        Decimal ID_AFILIACION_ARP = Convert.ToDecimal(filaInfoContrato["ID_ARP"]);
        Decimal ID_AFILIACION_CAJA_C = Convert.ToDecimal(filaInfoContrato["ID_CAJA_C"]);
        Decimal ID_AFILIACION_EPS = Convert.ToDecimal(filaInfoContrato["ID_EPS"]);
        Decimal ID_AFILIACION_F_PENSIONES = Convert.ToDecimal(filaInfoContrato["ID_F_PENSIONES"]);

        radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSolicitud = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
        DataRow filaSolicitud = tablaSolicitud.Rows[0];

        String NOMBRE_ASPIRANTE = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();
        String DOC_IDENTIDAD_ASPIRANTE = filaSolicitud["TIP_DOC_IDENTIDAD"].ToString().Trim() + " " + filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();
        String DIRECCION_ASPIRANTE = filaSolicitud["DIR_ASPIRANTE"].ToString().Trim();
        String CIUDAD_ASPIRANTE = filaSolicitud["NOMBRE_CIUDAD"].ToString().Trim();
        String SECTOR_ASPIRANTE = filaSolicitud["SECTOR"].ToString();
        String TELEFONOS_ASPIRANTE = filaSolicitud["TEL_ASPIRANTE"].ToString();
        String ASPIRACION_SALARIAL_ASPIRANTE;
        try { ASPIRACION_SALARIAL_ASPIRANTE = Convert.ToInt32(filaSolicitud["ASPIRACION_SALARIAL"]).ToString(); }
        catch { ASPIRACION_SALARIAL_ASPIRANTE = "Desconocido."; }
        String EMAIL_ASPIRANTE = filaSolicitud["E_MAIL"].ToString().Trim();

        int EDAD_ASPIRANTE = 0;
        if (DBNull.Value.Equals(filaSolicitud["FCH_NACIMIENTO"]) == false)
        {
            try
            {
                EDAD_ASPIRANTE = _tools.ObtenerEdadDesdeFechaNacimiento(Convert.ToDateTime(filaSolicitud["FCH_NACIMIENTO"]));
            }
            catch
            {
                EDAD_ASPIRANTE = 0;
            }
        }

        //FEMENINO, MASCULINO
        String SEXO = "Desconocido.";
        String LIBRETA_MILITAR = "Desconocida.";
        if (DBNull.Value.Equals(filaSolicitud["SEXO"]) == false)
        {
            if (filaSolicitud["SEXO"].ToString().ToUpper() == "F")
            {
                SEXO = "Femenino";
                LIBRETA_MILITAR = "No Aplica";
            }
            else
            {
                if (filaSolicitud["SEXO"].ToString().ToUpper() == "M")
                {
                    SEXO = "Masculino";
                    LIBRETA_MILITAR = filaSolicitud["LIB_MILITAR"].ToString();
                }
            }
        }

        //cargo al que aspira el candidato (cargo generico)
        cargo _cargo = new cargo(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaOcupacionAspira = _cargo.ObtenerOcupacionPorIdOcupacion(ID_SOLICITUD);
        String CARGO_APLICA = "Desconocido";
        if (tablaOcupacionAspira.Rows.Count > 0)
        {
            DataRow filaOcupacionAspira = tablaOcupacionAspira.Rows[0];
            CARGO_APLICA = filaOcupacionAspira["NOM_OCUPACION"].ToString().Trim();
        }

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\informeAfiliaciones.htm"));

        String html_formato_afilicaciones = archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        String html_encabezado = "<html>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        html_formato_afilicaciones = html_encabezado + html_formato_afilicaciones;

        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[NOMBRE_TRABAJADOR]", NOMBRE_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[DOC_IDENTIDAD_TRABAJADOR]", DOC_IDENTIDAD_ASPIRANTE);
        if (EDAD_ASPIRANTE > 0)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[EDAD_TRABAJADOR]", EDAD_ASPIRANTE.ToString() + " Años.");
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[EDAD_ASPIRANTE]", "Desconocida.");
        }
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[DIRECCION_TRABAJADOR]", DIRECCION_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[CIUDAD_TRABAJADOR]", CIUDAD_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[SECTOR_TRABAJADOR]", SECTOR_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TELEFONOS_TRABAJADOR]", TELEFONOS_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[ASPIRACION_SALARIAL_TRABAJADOR]", ASPIRACION_SALARIAL_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[EMAIL_TRABAJADOR]", EMAIL_ASPIRANTE);
        html_formato_afilicaciones = html_formato_afilicaciones.Replace("[LIBRETA_MILITAR_TRABAJADOR]", LIBRETA_MILITAR);

        //reemplazamos tag de arp
        String TABLA_AFILIACION_ARP = cargar_arp(ID_AFILIACION_ARP, ID_SOLICITUD, ID_EMPLEADO, ID_CONTRATO);
        if (TABLA_AFILIACION_ARP != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_ARP]", TABLA_AFILIACION_ARP);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_ARP]", "");
        }

        //reemplazamos tag de eps
        String TABLA_AFILIACION_EPS = cargar_eps(ID_AFILIACION_EPS, ID_SOLICITUD, ID_EMPLEADO, ID_CONTRATO);
        if (TABLA_AFILIACION_EPS != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_EPS]", TABLA_AFILIACION_EPS);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_EPS]", "");
        }

        //reemplazamos tag de caja de compensacion
        String TABLA_AFILIACION_CCF = cargar_caja(ID_AFILIACION_CAJA_C, ID_SOLICITUD, ID_EMPLEADO);
        if (TABLA_AFILIACION_CCF != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_CCF]", TABLA_AFILIACION_CCF);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_CCF]", "");
        }

        //reemplazamos tag de FONDO DE PENSIONES
        String TABLA_AFILIACION_AFP = cargar_afp(ID_AFILIACION_F_PENSIONES, ID_SOLICITUD, ID_EMPLEADO);
        if (TABLA_AFILIACION_AFP != null)
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_AFP]", TABLA_AFILIACION_AFP);
        }
        else
        {
            html_formato_afilicaciones = html_formato_afilicaciones.Replace("[TABLA_AFILIACION_AFP]", "");
        }

        html_formato_afilicaciones += 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), 40, 40, 80, 40);

        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 = "afiliaciones";

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

            //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();
        }
    }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA DE 16 DE ENERO DE 2013
    /// PARA OBTENER UN ARREGLO DE BYTES QUE CONFORMAN EL ARCHIVO DE MANUAL DE SERVICIO DE UNA EMPRESA
    /// </summary>
    /// <param name="ID_VERSIONAMIENTO"></param>
    /// <param name="ID_EMPRESA"></param>
    /// <param name="_datos"></param>
    /// <returns></returns>
    public byte[] GenerarPDFManualServicio(Decimal ID_VERSIONAMIENTO, String versionManual, DateTime fechaEmision, DateTime fechaAPartirDe, Decimal ID_EMPRESA, Conexion _datos)
    {
        //vrificada por _datos

        int contadorSeccion = 0;
        String html_completo = String.Empty;

        contadorSeccion += 1;
        //ok---------------
        String seccionIdentificacionCliente = ObtenerSeccionIdentificacionCliente(ID_EMPRESA, contadorSeccion, _datos);
        html_completo += seccionIdentificacionCliente;

        html_completo += "<br>";

        //ok
        String seccionControlModificaciones = ObtenerSeccionControlModificaciones(ID_EMPRESA, 0, _datos);
        html_completo += seccionControlModificaciones;

        html_completo += "<br>";

        contadorSeccion += 1;
        //ok
        String seccionGestionComercial = ObtenerSeccionGestionComercial(ID_EMPRESA, contadorSeccion, _datos);
        html_completo += seccionGestionComercial;

        html_completo += "<br>";

        contadorSeccion += 1;
        String seccionProcesoSeleccion = ObtenerSeccionProcesoSeleccion(ID_EMPRESA, contadorSeccion, _datos);
        html_completo += seccionProcesoSeleccion;

        html_completo += "<br>";

        contadorSeccion += 1;
        String seccionContratacion = ObtenerSeccionContratacion(ID_EMPRESA, contadorSeccion, _datos);
        html_completo += seccionContratacion;

        //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), 40, 40, 110, 40);

        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

            // ojojojojojojo
            PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_sertempo.png");
            // ojojojojojojo

            PageEventHandler.fechaApartirDe = fechaAPartirDe;
            PageEventHandler.versionManual = versionManual;
            PageEventHandler.fechaImpresion = DateTime.Now;
            PageEventHandler.tipoDocumento = "manualServicio";

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

            //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();
        }
    }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA 18 DE DICIEMBRE DE 2012
    /// PARA GENERAR LA REFERENCIA
    /// </summary>
    /// <returns></returns>
    public byte[] GenerarPDFReferencia(Decimal ID_REFERENCIA, Decimal ID_SOLICITUD)
    {
        tools _tools = new tools();

        String html_encabezado = "<html>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSolicitud = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
        DataRow filaSolicitud = tablaSolicitud.Rows[0];

        referencia _referencia = new referencia(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaReferencia = _referencia.ObtenerPorIdReferencia(ID_REFERENCIA);
        DataRow filaReferencia = tablaReferencia.Rows[0];

        String NOMBRE_CANDIDATO = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();
        String NUM_DOC_IDENTIDAD_CANDIDATO = filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();

        String EMPRESA_DONDE_TRABAJO_CANDIDATO = filaReferencia["EMPRESA_TRABAJO"].ToString().Trim();
        String TELEFONO_EMPRESA = filaReferencia["NUM_TELEFONO"].ToString().Trim();

        String EMPRESA_TEMPORAL = filaReferencia["EMPRESA_TEMPORAL"].ToString().Trim();
        String NUM_TELEFONO_TEMPORAL = filaReferencia["NUM_TELEFONO_TEMPOAL"].ToString().Trim();

        String TIPO_CONTRATO = filaReferencia["TIPO_CONTRATO"].ToString().Trim();

        String FECHA_INGRESO_CANDIDATO = "";
        if (DBNull.Value.Equals(filaReferencia["FECHA_INGRESO"]) == false)
        {
            FECHA_INGRESO_CANDIDATO = Convert.ToDateTime(filaReferencia["FECHA_INGRESO"]).ToShortDateString();
        }
        String FECHA_RETIRO_CANDIDATO = "";
        if (DBNull.Value.Equals(filaReferencia["FECHA_RETIRO"]) == false)
        {
            FECHA_RETIRO_CANDIDATO = Convert.ToDateTime(filaReferencia["FECHA_RETIRO"]).ToShortDateString();
        }

        String ULTIMO_CARGO_CANDIDATO = filaReferencia["ULTIMO_CARGO"].ToString().Trim();

        String NOMBRE_INFORMANTE = filaReferencia["NOMBRE_INFORMANTE"].ToString().Trim();
        String CARGO_INFORMANTE = filaReferencia["CARGO_INFORMANTE"].ToString().Trim();

        String NOMBRE_JEFE = filaReferencia["NOMBRE_JEFE"].ToString().Trim();
        String CARGO_JEFE = filaReferencia["CARGO_JEFE"].ToString().Trim();

        String ULTIMO_SALARIO_CANDIDATO = "Desconocido.";
        try
        {
            ULTIMO_SALARIO_CANDIDATO = Convert.ToDecimal(filaReferencia["ULTIMO_SALARIO"]).ToString();
        }
        catch
        {
            ULTIMO_SALARIO_CANDIDATO = "Desconocido.";
        }

        String COMISIONES = filaReferencia["COMISIONES"].ToString().Trim();
        String BONOS = filaReferencia["BONOS"].ToString().Trim();

        String MOTIVO_RETIRO = filaReferencia["MOTIVO_RETIRO"].ToString().Trim();

        String USUARIO_REFERENCIADOR = Session["USU_LOG"].ToString();
        String NOMBRE_REFERENCIADOR = "Desconocido.";
        if (DBNull.Value.Equals(filaReferencia["USU_MOD"]) == false)
        {
            USUARIO_REFERENCIADOR = filaReferencia["USU_MOD"].ToString().Trim();
        }
        else
        {
            USUARIO_REFERENCIADOR = filaReferencia["USU_CRE"].ToString().Trim();
        }

        String CUALIDADES_CALIFICACION = filaReferencia["CUALIDADES_CALIFICACION"].ToString().Trim();

        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaUsuario = _usuario.ObtenerUsuarioPorUsuLog(USUARIO_REFERENCIADOR);
        DataRow filaUsuario = tablaUsuario.Rows[0];
        if (filaUsuario["USU_TIPO"].ToString().ToUpper() == "PLANTA")
        {
            NOMBRE_REFERENCIADOR = filaUsuario["NOMBRES"].ToString().Trim() + " " + filaUsuario["APELLIDOS"].ToString().Trim();
        }
        else
        {
            NOMBRE_REFERENCIADOR = filaUsuario["NOMBRES_EXTERNO"].ToString().Trim() + " " + filaUsuario["APELLIDOS_EXTERNO"].ToString().Trim();
        }

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\referencia.htm"));

        String html_formato_referencia = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        html_formato_referencia = html_formato_referencia.Replace("[NOMBRE_CANDIDATO]", NOMBRE_CANDIDATO);
        html_formato_referencia = html_formato_referencia.Replace("[NUM_DOC_IDENTIDAD_CANDIDATO]", NUM_DOC_IDENTIDAD_CANDIDATO);

        html_formato_referencia = html_formato_referencia.Replace("[EMPRESA_DONDE_TRABAJO_CANDIDATO]", EMPRESA_DONDE_TRABAJO_CANDIDATO);
        html_formato_referencia = html_formato_referencia.Replace("[TELEFONO_EMPRESA]", TELEFONO_EMPRESA);

        html_formato_referencia = html_formato_referencia.Replace("[EMPRESA_TEMPORAL]", EMPRESA_TEMPORAL);
        html_formato_referencia = html_formato_referencia.Replace("[TELEFONO_TEMPORAL]", NUM_TELEFONO_TEMPORAL);

        if (TIPO_CONTRATO == "OBRA O LABOR")
        {
            html_formato_referencia = html_formato_referencia.Replace("[OBRA_LABOR]", " X ");
            html_formato_referencia = html_formato_referencia.Replace("[FIJO]", "___");
            html_formato_referencia = html_formato_referencia.Replace("[INDEFINIDO]", "___");
        }
        else
        {
            if (TIPO_CONTRATO == "FIJO")
            {
                html_formato_referencia = html_formato_referencia.Replace("[OBRA_LABOR]", "___");
                html_formato_referencia = html_formato_referencia.Replace("[FIJO]", " X ");
                html_formato_referencia = html_formato_referencia.Replace("[INDEFINIDO]", "___");
            }
            else
            {
                if (TIPO_CONTRATO == "INDEFINIDO")
                {
                    html_formato_referencia = html_formato_referencia.Replace("[OBRA_LABOR]", "___");
                    html_formato_referencia = html_formato_referencia.Replace("[FIJO]", "___");
                    html_formato_referencia = html_formato_referencia.Replace("[INDEFINIDO]", " X ");
                }
                else
                {
                    html_formato_referencia = html_formato_referencia.Replace("[OBRA_LABOR]", "___");
                    html_formato_referencia = html_formato_referencia.Replace("[FIJO]", "___");
                    html_formato_referencia = html_formato_referencia.Replace("[INDEFINIDO]", "___");
                }
            }
        }

        html_formato_referencia = html_formato_referencia.Replace("[FECHA_INGRESO_CANDIDATO]", FECHA_INGRESO_CANDIDATO);
        html_formato_referencia = html_formato_referencia.Replace("[FECHA_RETIRO_CANDIDATO]", FECHA_RETIRO_CANDIDATO);

        html_formato_referencia = html_formato_referencia.Replace("[ULTIMO_CARGO_CANDIDATO]", ULTIMO_CARGO_CANDIDATO);

        html_formato_referencia = html_formato_referencia.Replace("[NOMBRE_INFORMANTE]", NOMBRE_INFORMANTE);
        html_formato_referencia = html_formato_referencia.Replace("[CARGO_INFORMANTE]", CARGO_INFORMANTE);

        html_formato_referencia = html_formato_referencia.Replace("[NOMBRE_JEFE]", NOMBRE_JEFE);
        html_formato_referencia = html_formato_referencia.Replace("[CARGO_JEFE]", CARGO_JEFE);

        html_formato_referencia = html_formato_referencia.Replace("[ULTIMO_SALARIO_CANDIDATO]", ULTIMO_SALARIO_CANDIDATO);
        html_formato_referencia = html_formato_referencia.Replace("[COMISIONES]", COMISIONES);
        html_formato_referencia = html_formato_referencia.Replace("[BONOS]", BONOS);

        html_formato_referencia = html_formato_referencia.Replace("[MOTIVO_RETIRO]", MOTIVO_RETIRO);

        html_formato_referencia = html_formato_referencia.Replace("[NOMBRE_REFERENCIADOR]", NOMBRE_REFERENCIADOR);

        if (DBNull.Value.Equals(filaReferencia["FCH_MOD"]) == false)
        {
            html_formato_referencia = html_formato_referencia.Replace("[FECHA_REFERECIA]", Convert.ToDateTime(filaReferencia["FCH_MOD"]).ToShortDateString());
        }
        else
        {
            html_formato_referencia = html_formato_referencia.Replace("[FECHA_REFERECIA]", Convert.ToDateTime(filaReferencia["FCH_CRE"]).ToShortDateString());
        }

        //ya esta la informacion de la referecia basica ahora le adicionadmos al informe los datos de las preguntas
        DataTable tablaPreguntasRespuestas = _referencia.ObtenerPreguntasRespuestasReferencia(ID_REFERENCIA);
        if (tablaPreguntasRespuestas.Rows.Count > 0)
        {
            int contadorPreguntas = 0;
            //recorrido por las preguntas
            String html_tabla_preguntas = "";
            html_tabla_preguntas += "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" align=\"center\">";
            html_tabla_preguntas += "<tr>";
            html_tabla_preguntas += "<td width=\"15%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "#";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "<td style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "CUESTIONARIO";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "<td style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "RESPUESTA";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "</tr>";
            for (int i = 0; i < tablaPreguntasRespuestas.Rows.Count; i++)
            {
                DataRow filaPregunta = tablaPreguntasRespuestas.Rows[i];

                contadorPreguntas += 1;

                String textoPregunta = filaPregunta["CONTENIDO"].ToString().Trim();
                String textoRespuesta = filaPregunta["RESPUESTA"].ToString().Trim();

                html_tabla_preguntas += "<tr>";
                html_tabla_preguntas += "<td width=\"15%\" style=\"text-align:center;\">";
                html_tabla_preguntas += contadorPreguntas.ToString();
                html_tabla_preguntas += "</td>";
                html_tabla_preguntas += "<td style=\"text-align:justify;\">";
                html_tabla_preguntas += textoPregunta;
                html_tabla_preguntas += "</td>";
                html_tabla_preguntas += "<td style=\"text-align:center;\">";
                html_tabla_preguntas += textoRespuesta;
                html_tabla_preguntas += "</td>";
                html_tabla_preguntas += "</tr>";
            }
            html_tabla_preguntas += "</table>";

            html_formato_referencia = html_formato_referencia.Replace("[TABLA_CUESTIONARIO]", html_tabla_preguntas);
        }

        if (String.IsNullOrEmpty(CUALIDADES_CALIFICACION) == false)
        {
            String html_tabla_preguntas = "";
            html_tabla_preguntas += "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"80%\" align=\"center\">";
            html_tabla_preguntas += "<tr>";
            html_tabla_preguntas += "<td width=\"50%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "CUALIDAD";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "<td width=\"12%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "EXCELENTE";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "<td width=\"13%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "BUENO";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "<td width=\"12%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "REGULAR";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "<td width=\"13%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_preguntas += "MALO";
            html_tabla_preguntas += "</td>";
            html_tabla_preguntas += "</tr>";

            String[] cualidadesCalificacionesArray = CUALIDADES_CALIFICACION.Split(';');

            foreach(String cualidadCalificacion in cualidadesCalificacionesArray)
            {
                String CUALIDAD = cualidadCalificacion.Split(':')[0];
                String CALIFICACION = cualidadCalificacion.Split(':')[1];

                html_tabla_preguntas += "<tr>";
                html_tabla_preguntas += "<td width=\"50%\" style=\"text-align:left;\">";
                html_tabla_preguntas += CUALIDAD;
                html_tabla_preguntas += "</td>";
                html_tabla_preguntas += "<td width=\"12%\" style=\"text-align:justify;\">";
                if(CALIFICACION == "EXCELENTE")
                {
                    html_tabla_preguntas += "X";
                }
                html_tabla_preguntas += "</td>";

                html_tabla_preguntas += "<td width=\"13%\" style=\"text-align:center;\">";
                if (CALIFICACION == "BUENO")
                {
                    html_tabla_preguntas += "X";
                }
                html_tabla_preguntas += "</td>";
                html_tabla_preguntas += "<td width=\"12%\" style=\"text-align:center;\">";
                if (CALIFICACION == "REGULAR")
                {
                    html_tabla_preguntas += "X";
                }
                html_tabla_preguntas += "</td>";
                html_tabla_preguntas += "<td width=\"13%\" style=\"text-align:center;\">";
                if (CALIFICACION == "MALO")
                {
                    html_tabla_preguntas += "X";
                }
                html_tabla_preguntas += "</td>";
                html_tabla_preguntas += "</tr>";
            }

            html_tabla_preguntas += "</table>";

            html_formato_referencia = html_formato_referencia.Replace("[TABLA_CUALIDADES]", html_tabla_preguntas);
        }

        html_formato_referencia += 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 = "referencia";

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

            //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();
        }
    }
    public byte[] GenerarPDFEntrevistaRetiro(Decimal ID_EMPLEADO, Decimal ID_SOLICITUD, Decimal ID_EMPRESA)
    {
        String USULOG_ENTREVISTA = Session["USU_LOG"].ToString();

        tools _tools = new tools();

        // OBTENEMOS INFORMACION DE USUARIO
        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaUsuario = _usuario.ObtenerUsuarioPorUsuLog(USULOG_ENTREVISTA); //ACA VA ES EL DE LA ENTREVISTA
        DataRow filaUsuario = tablaUsuario.Rows[0];

        String NOMBRE_DILIGENCIA = "";
        if (filaUsuario["USU_TIPO"].ToString().ToUpper() == "PLANTA")
        {
            NOMBRE_DILIGENCIA = filaUsuario["NOMBRES"].ToString().Trim() + " " + filaUsuario["APELLIDOS"].ToString().Trim();
        }
        else
        {
            NOMBRE_DILIGENCIA = filaUsuario["NOMBRES_EXTERNO"].ToString().Trim() + " " + filaUsuario["APELLIDOS_EXTERNO"].ToString().Trim();
        }

        //OBTENEMOS LA INFORMACION DEL CLIENTE
        cliente _cliente = new cliente(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaCliente = _cliente.ObtenerEmpresaConIdEmpresa(ID_EMPRESA);
        DataRow filaCliente = tablaCliente.Rows[0];

        String RAZ_SOCIAL = filaCliente["RAZ_SOCIAL"].ToString().Trim();
        String NIT_EMPRESA = filaCliente["NIT_EMPRESA"].ToString().Trim() + "-" + filaCliente["DIG_VER"].ToString().Trim();
        String DIR_EMPRESA = filaCliente["DIR_EMP"].ToString().Trim() + " " + filaCliente["ID_CIUDAD_EMPRESA"].ToString().Trim();

        //OBTENEMOS LA INFORMACION DE LA SOLICITUD DE INGRESO
        radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSolicitud = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
        DataRow filaSolicitud = tablaSolicitud.Rows[0];

        String NOMBRE_ASPIRANTE = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();
        String DOC_IDENTIDAD_ASPIRANTE = filaSolicitud["TIP_DOC_IDENTIDAD"].ToString().Trim() + " " + filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();
        int EDAD_ASPIRANTE = 0;
        if (DBNull.Value.Equals(filaSolicitud["FCH_NACIMIENTO"]) == false)
        {
            try
            {
                EDAD_ASPIRANTE = _tools.ObtenerEdadDesdeFechaNacimiento(Convert.ToDateTime(filaSolicitud["FCH_NACIMIENTO"]));
            }
            catch
            {
                EDAD_ASPIRANTE = 0;
            }
        }
        String DIRECCION_ASPIRANTE = filaSolicitud["DIR_ASPIRANTE"].ToString().Trim();
        String CIUDAD_ASPIRANTE = filaSolicitud["NOMBRE_CIUDAD"].ToString().Trim();
        String SECTOR_ASPIRANTE = filaSolicitud["SECTOR"].ToString();
        String TELEFONOS_ASPIRANTE = filaSolicitud["TEL_ASPIRANTE"].ToString();
        String EMAIL_ASPIRANTE = filaSolicitud["E_MAIL"].ToString().Trim();

        //DATOS DEL MOTIVO DE RETIRO
        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaResultadosEntrevista = _motivo.ObtenerResultadosEntrevistaDeRetiroParaEmpleado(ID_EMPLEADO);

        //CREAMOS LA TABLA DE MOTIVOS DE RETIRO
        Boolean yaSeTieneObservaciones = false;
        String OBSERVACIONES = null;

        String html_tabla_motivos = "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"95%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
        html_tabla_motivos += "<tr>";
        html_tabla_motivos += "<td width=\"50%\" style=\"text-align:center;\">";
        html_tabla_motivos += "CATEGORÍA";
        html_tabla_motivos += "</td>";
        html_tabla_motivos += "<td width=\"50%\" style=\"text-align:center;\">";
        html_tabla_motivos += "MOTIVO";
        html_tabla_motivos += "</td>";
        html_tabla_motivos += "</tr>";
        foreach (DataRow filaMotivo in tablaResultadosEntrevista.Rows)
        {
            if (yaSeTieneObservaciones == false)
            {
                //SOLO UNA VEZ
                OBSERVACIONES = filaMotivo["OBSERVACIONES"].ToString().Trim();
                yaSeTieneObservaciones = true;
            }

            Decimal ID_DETALLE_ROTACION_EMPLEADO = Convert.ToDecimal(filaMotivo["ID_DETALLE_ROTACION_EMPLEADO"]);
            Decimal ID_MAESTRA_ROTACION_EMPLEADO = Convert.ToDecimal(filaMotivo["ID_MAESTRA_ROTACION_EMPLEADO"]);
            Decimal ID_ROTACION_EMPRESA = Convert.ToDecimal(filaMotivo["ID_ROTACION_EMPRESA"]);

            //OBTENEMOS DATOS COMPLEMENTARIOS POR MEDIO DE ID_ROTACION_EMPRESA
            DataTable tablaInfoComplementaria = _motivo.ObtenerMotivoEmpresaPorId(ID_ROTACION_EMPRESA);
            DataRow filaInfoComplementaria = tablaInfoComplementaria.Rows[0];

            html_tabla_motivos += "<tr>";
            html_tabla_motivos += "<td width=\"50%\" style=\"text-align:justify;\">";
            html_tabla_motivos += filaInfoComplementaria["TITULO_MAESTRA_ROTACION"];
            html_tabla_motivos += "</td>";
            html_tabla_motivos += "<td width=\"50%\" style=\"text-align:justify;\">";
            html_tabla_motivos += filaInfoComplementaria["TITULO"];
            html_tabla_motivos += "</td>";
            html_tabla_motivos += "</tr>";
        }
        html_tabla_motivos += "</table>";

        /*
         * Generación del archi de informe de entrevista de retiro
         * Stream con el contenido del pdf.
        */
        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\entrevista_retiro.htm"));

        String html_formato_entrevista = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        html_formato_entrevista = html_formato_entrevista.Replace("[RAZ_SOCIAL]", RAZ_SOCIAL);
        html_formato_entrevista = html_formato_entrevista.Replace("[NIT_EMPRESA]", NIT_EMPRESA);
        html_formato_entrevista = html_formato_entrevista.Replace("[DIR_EMPRESA]", DIR_EMPRESA);

        html_formato_entrevista = html_formato_entrevista.Replace("[NOMBRE_ASPIRANTE]", NOMBRE_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[DOC_IDENTIDAD_ASPIRANTE]", DOC_IDENTIDAD_ASPIRANTE);
        if (EDAD_ASPIRANTE > 0)
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[EDAD_ASPIRANTE]", EDAD_ASPIRANTE.ToString() + " Años.");
        }
        else
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[EDAD_ASPIRANTE]", "Desconocida.");
        }
        html_formato_entrevista = html_formato_entrevista.Replace("[DIRECCION_ASPIRANTE]", DIRECCION_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[CIUDAD_ASPIRANTE]", CIUDAD_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[SECTOR_ASPIRANTE]", SECTOR_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[TELEFONOS_ASPIRANTE]", TELEFONOS_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[EMAIL_ASPIRANTE]", EMAIL_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_MOTIVOS_RETIRO]", html_tabla_motivos);

        html_formato_entrevista = html_formato_entrevista.Replace("[OBSERVACIONES]", OBSERVACIONES);

        html_formato_entrevista = html_formato_entrevista.Replace("[NOMBRE_DILIGENCIA]", NOMBRE_DILIGENCIA);

        html_formato_entrevista += 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_retiro";

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

            //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();
        }
    }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA 19 DE DICIEMBRE DE 2012
    /// PARA OBTENER LOS ARCHIVOS DE LOS AUTOS DE RECOMENDACION
    /// </summary>
    /// <returns></returns>
    public byte[] GenerarPDFExamenes(Decimal ID_CONTRATO, Decimal ID_SOLICITUD, Decimal ID_REQUERIMIENTO)
    {
        Boolean hayAutos = false;
        String armadoDeAutos = "";

        ordenExamenes _ordenes = new ordenExamenes(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaOrdenes = _ordenes.ObtenerConRegOrdenExamenPorSolicitud(Convert.ToInt32(ID_REQUERIMIENTO), Convert.ToInt32(ID_SOLICITUD));
        foreach (DataRow filaExamenes in tablaOrdenes.Rows)
        {
            //OBSERVACIONES ES EL CAMPO DONDE ESTA ALMACENADO EL AUTO DE RECOMENDACION SI EXISE
            if (!(String.IsNullOrEmpty(filaExamenes["OBSERVACIONES"].ToString().Trim())))
            {
                if (hayAutos == false)
                {
                    armadoDeAutos = filaExamenes["OBSERVACIONES"].ToString().Trim();
                }
                else
                {
                    armadoDeAutos += "; " + filaExamenes["OBSERVACIONES"].ToString().Trim();
                }
                hayAutos = true;
            }
        }

        if (hayAutos)
        {
            /*
            ---------------TAGS ENCONTRADOS EN AUTOS_RECOMENDACION-------------------
            [FECHA_AUTO]			= FECHA DE LA CABECERA DE LA APERTURA DE CUENTA
            [NOMBRE_TRABAJADOR]		= NOMBRE DEL BANCO
            [TELEFONO_TRABAJADOR]		= TELEFONO DEL TRABAJADOR
            [TIPO_DOCUMENTO_IDENTIDAD]	= tipo de documento del trabajador
            [NUMERO_DOCUMENTO_IDENTIDAD]	= numero del documento de identidad del trabajador
            [AUTOS_RECOMENDACION]		= nombre analista que firma
            [NOMBRE_EMPLEADOR]		= cartgo del que firma
            */

            radicacionHojasDeVida _sol = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaSol = _sol.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
            DataRow filaSol = tablaSol.Rows[0];

            //DATOS DEL INFORME
            DateTime FECHA_AUTO = DateTime.Now;
            String NOMBRE_TRABAJADOR = filaSol["NOMBRES"].ToString().Trim() + " " + filaSol["APELLIDOS"].ToString().Trim();
            String TELEFONO_TRABAJADOR = filaSol["TEL_ASPIRANTE"].ToString().Trim();
            String TIPO_DOCUMENTO_IDENTIDAD = filaSol["TIP_DOC_IDENTIDAD"].ToString().Trim();
            String NUMERO_DOCUMENTO_IDENTIDAD = filaSol["NUM_DOC_IDENTIDAD"].ToString().Trim();
            String AUTOS_RECOMENDACION = armadoDeAutos;
            String NOMBRE_EMPLEADOR = null;

            if (Session["idEmpresa"].ToString() == "1")
            {
                NOMBRE_EMPLEADOR = tabla.VAR_NOMBRE_SERTEMPO;
            }
            else
            {
                NOMBRE_EMPLEADOR = tabla.VAR_NOMBRE_EYS;
            }

            //En esta variable cargamos el documento plantilla
            StreamReader archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\autos_recomendacion.htm"));

            String html = archivo.ReadToEnd();

            archivo.Dispose();
            archivo.Close();

            html = html.Replace("[FECHA_AUTO]", FECHA_AUTO.ToLongDateString());
            html = html.Replace("[NOMBRE_TRABAJADOR]", NOMBRE_TRABAJADOR);
            html = html.Replace("[TELEFONO_TRABAJADOR]", TELEFONO_TRABAJADOR);
            html = html.Replace("[TIPO_DOCUMENTO_IDENTIDAD]", TIPO_DOCUMENTO_IDENTIDAD);
            html = html.Replace("[NUMERO_DOCUMENTO_IDENTIDAD]", NUMERO_DOCUMENTO_IDENTIDAD);
            html = html.Replace("[AUTOS_RECOMENDACION]", AUTOS_RECOMENDACION);
            html = html.Replace("[NOMBRE_EMPLEADOR]", NOMBRE_EMPLEADOR);
            html = html.Replace("[DIR_FIRMA_SALUD]", tabla.DIR_IMAGENES_PARA_PDF + "/firma_autos_recomendacion.jpg");

            //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(612, 397), 25, 25, 75, 30);

            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
                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 = "autos_recomendacion";

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

                //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();
            }
        }
        else
        {
            return null;
        }
    }
    /// <summary>
    /// HECHO POR CESAR PULIDO
    /// EL DIA 18 DE DICIMEBRE DE 2012
    /// PARA GENERAR LA ENTRVISTA CON O SIN COMPETENCIAS
    /// </summary>
    /// <returns></returns>
    public byte[] GenerarPDFEntrevista(Decimal ID_SOLICITUD, Decimal ID_PERFIL)
    {
        //ok
        tools _tools = new tools();

        radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSolicitud = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
        DataRow filaSolicitud = tablaSolicitud.Rows[0];

        String NOMBRE_ASPIRANTE = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();

        String DOC_IDENTIDAD_ASPIRANTE = filaSolicitud["TIP_DOC_IDENTIDAD"].ToString().Trim() + " " + filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();

        int EDAD_ASPIRANTE = 0;
        if (DBNull.Value.Equals(filaSolicitud["FCH_NACIMIENTO"]) == false)
        {
            try
            { EDAD_ASPIRANTE = _tools.ObtenerEdadDesdeFechaNacimiento(Convert.ToDateTime(filaSolicitud["FCH_NACIMIENTO"])); }
            catch { EDAD_ASPIRANTE = 0; }
        }

        String TIPO_VIVIENDA_ASPIRANTE = "Desconocida";
        if(DBNull.Value.Equals(filaSolicitud["TIPO_VIVIENDA"]) == false)
        {
            TIPO_VIVIENDA_ASPIRANTE = filaSolicitud["TIPO_VIVIENDA"].ToString().Trim();
        }

        String CIUDAD_ASPIRANTE = "Desconocida";
        if (DBNull.Value.Equals(filaSolicitud["NOMBRE_CIUDAD"]) == false)
        {
            CIUDAD_ASPIRANTE = filaSolicitud["NOMBRE_CIUDAD"].ToString().Trim();
        }

        String DIRECCION_ASPIRANTE = filaSolicitud["DIR_ASPIRANTE"].ToString().Trim();

        String SECTOR_ASPIRANTE = filaSolicitud["SECTOR"].ToString().Trim();

        String ESTRATO_ASPIRANTE = "Desconocido";
        if (DBNull.Value.Equals(filaSolicitud["ESTRATO"]) == false) { ESTRATO_ASPIRANTE = filaSolicitud["ESTRATO"].ToString().Trim(); }

        String TELEFONOS_ASPIRANTE = filaSolicitud["TEL_ASPIRANTE"].ToString();

        String ASPIRACION_SALARIAL_ASPIRANTE;
        try { ASPIRACION_SALARIAL_ASPIRANTE = Convert.ToInt32(filaSolicitud["ASPIRACION_SALARIAL"]).ToString(); }
        catch { ASPIRACION_SALARIAL_ASPIRANTE = "Desconocido."; }

        String ESTADO_CIVIL = "Desconocido";
        if (DBNull.Value.Equals(filaSolicitud["ESTADO_CIVIL"]) == false)
        {
            ESTADO_CIVIL = filaSolicitud["ESTADO_CIVIL"].ToString().Trim();
        }

        String EMAIL_ASPIRANTE = filaSolicitud["E_MAIL"].ToString().Trim();

        //FEMENINO, MASCULINO
        String SEXO = "Desconocido.";
        String LIBRETA_MILITAR = "Desconocida.";
        if (DBNull.Value.Equals(filaSolicitud["SEXO"]) == false)
        {
            if (filaSolicitud["SEXO"].ToString().ToUpper() == "F")
            {
                SEXO = "Femenino";
                LIBRETA_MILITAR = "No Aplica";
            }
            else
            {
                if (filaSolicitud["SEXO"].ToString().ToUpper() == "M")
                {
                    SEXO = "Masculino";
                    LIBRETA_MILITAR = filaSolicitud["LIB_MILITAR"].ToString();
                }
            }
        }

        //cargo al que aspira el candidato (cargo generico)
        String CARGO_APLICA = "Desconocido";
        Decimal ID_OCUPACION = 0;
        perfil _perfil = new perfil(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaPerfil = new DataTable();
        Decimal ID_ASSESMENT_CENTER = 0;

        if (ID_PERFIL <= 0)
        {
            CARGO_APLICA = "Entrevista por Producción.";
            ID_ASSESMENT_CENTER = 0;
        }
        else
        {
            tablaPerfil = _perfil.ObtenerPorRegistro(ID_PERFIL);
            if (tablaPerfil.Rows.Count <= 0)
            {
                CARGO_APLICA = "Desconocido.";
                ID_ASSESMENT_CENTER = 0;
            }
            else
            {
                DataRow filaPerfil = tablaPerfil.Rows[0];
                try
                {
                    ID_OCUPACION = Convert.ToDecimal(filaPerfil["ID_OCUPACION"]);
                }
                catch
                {
                    ID_OCUPACION = 0;
                }

                if (ID_OCUPACION > 0)
                {
                    cargo _cargo = new cargo(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                    DataTable tablaOcupacionAspira = _cargo.ObtenerOcupacionPorIdOcupacion(ID_OCUPACION);

                    if (tablaOcupacionAspira.Rows.Count > 0)
                    {
                        DataRow filaOcupacionAspira = tablaOcupacionAspira.Rows[0];
                        CARGO_APLICA = filaOcupacionAspira["NOM_OCUPACION"].ToString().Trim();
                    }
                }

                //DETERMINAMOS SI SE TIENE UN ID_ASSESMENT_CENTER ASOCIADO AL PERFIL
                if(filaPerfil["TIPO_ENTREVISTA"].ToString().Trim() == "A")
                {
                    try
                    {
                        ID_ASSESMENT_CENTER = Convert.ToDecimal(filaPerfil["ID_ASSESMENT_CENTAR"]);
                    }
                    catch
                    {
                        ID_ASSESMENT_CENTER = 0;
                    }
                }
                else
                {
                    ID_ASSESMENT_CENTER = 0;
                }
            }
        }

        //si la entrevista basica existe ya
        hojasVida _hojasVida = new hojasVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaEntrevista = _hojasVida.ObtenerSelRegEntrevistasPorIdSolicitud(ID_SOLICITUD);

        String FECHA_ENTREVISTA = "Desconocida.";
        String COMPOSICION_FAMILIAR_ASPIRANTE = "Desconocida.";
        String INFO_ACADEMICA_ASPIRANTE = "Desconocida.";
        String EXPERIENCIA_LAB_ASPIRANTE = "Desconocida.";
        String CONCEPTO_GENERAL = "Desconodido.";
        String USUARIO_ENTREVISTADOR = Session["USU_LOG"].ToString();

        Decimal ID_ENTREVISTA = 0;

        if (tablaEntrevista.Rows.Count > 0)
        {
            DataRow filaEntrevista = tablaEntrevista.Rows[0];

            ID_ENTREVISTA = Convert.ToDecimal(filaEntrevista["REGISTRO"]);

            try
            {
                FECHA_ENTREVISTA = Convert.ToDateTime(filaEntrevista["FCH_ENTREVISTA"]).ToShortDateString();
            }
            catch
            {
                FECHA_ENTREVISTA = "Desconocida.";
            }

            COMPOSICION_FAMILIAR_ASPIRANTE = filaEntrevista["COM_C_FAM"].ToString().Trim();
            INFO_ACADEMICA_ASPIRANTE = filaEntrevista["COM_C_ACA"].ToString().Trim();
            EXPERIENCIA_LAB_ASPIRANTE = filaEntrevista["COM_F_LAB"].ToString().Trim();
            CONCEPTO_GENERAL = filaEntrevista["COM_C_GEN"].ToString().Trim();

            if (DBNull.Value.Equals(filaEntrevista["USU_MOD"]) == false)
            {
                USUARIO_ENTREVISTADOR = filaEntrevista["USU_MOD"].ToString().Trim();
            }
            else
            {
                USUARIO_ENTREVISTADOR = filaEntrevista["USU_CRE"].ToString().Trim();
            }
        }

        String NIVEL_ESCOLARIDAD = "Desconocido";
        if (DBNull.Value.Equals(filaSolicitud["NIVEL_ESCOLARIDAD"]) == false)
        {
            if (filaSolicitud["NIVEL_ESCOLARIDAD"].ToString().Trim() == "NO REQUERIDO")
            {
                NIVEL_ESCOLARIDAD = "NO APLICA";
            }
            else
            {
                NIVEL_ESCOLARIDAD = filaSolicitud["NIVEL_ESCOLARIDAD"].ToString().Trim();
            }
        }

        String PROFESION_ASPIRANTE = "Desconocida";
        if (DBNull.Value.Equals(filaSolicitud["ID_NUCLEO_FORMACION"]) == false)
        {
            PROFESION_ASPIRANTE = filaSolicitud["ID_NUCLEO_FORMACION"].ToString().Trim();
        }

        String ESPECIALIZACION_ASPIRANTE = "Desconocida";
        if (DBNull.Value.Equals(filaSolicitud["AREA_INTERES"]) == false)
        {
            ESPECIALIZACION_ASPIRANTE = filaSolicitud["AREA_INTERES"].ToString().Trim().ToUpper();
        }

        String CABEZA_FAMILIA = "Desconocido";
        if (DBNull.Value.Equals(filaSolicitud["C_FMLIA"]) == false)
        {
            if (filaSolicitud["C_FMLIA"].ToString().Trim() == "S")
            {
                CABEZA_FAMILIA = "SI";
            }
            else
            {
                CABEZA_FAMILIA = "NO";
            }
        }

        String NUM_HIJOS = "Desconocido";
        if (DBNull.Value.Equals(filaSolicitud["NRO_HIJOS"]) == false)
        {
            NUM_HIJOS = filaSolicitud["NRO_HIJOS"].ToString().Trim();
        }

        /*
         * Generación del archi de informe de selección
         * Stream con el contenido del pdf.
        */
        String html_encabezado = "<html>";
        html_encabezado += "<head>";
        html_encabezado += "</head>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        //para el concepto general en entrevista o resultado de competencias.
        String html_concepto = "<div style=\"text-align: left; margin: 0 0 0 20px; text-decoration: underline; font-weight: bold;\">";
        html_concepto += "CONCEPTO DEL ENTREVISTADOR";
        html_concepto += "</div>";
        html_concepto += "<br />";
        html_concepto += "<div style=\"text-align: justify;\">";
        html_concepto += "[CONCEPTO_GENERAL]";
        html_concepto += "</div>";

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\entrevista.htm"));

        String html_formato_entrevista = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        // -----------------------------------
        html_formato_entrevista = html_formato_entrevista.Replace("[CARGO_APLICA]", CARGO_APLICA);
        html_formato_entrevista = html_formato_entrevista.Replace("[FECHA_ENTREVISTA]", FECHA_ENTREVISTA);
        // -----------------------------------

        // -----------------------------------
        html_formato_entrevista = html_formato_entrevista.Replace("[NOMBRE_ASPIRANTE]", NOMBRE_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[DOC_IDENTIDAD_ASPIRANTE]", DOC_IDENTIDAD_ASPIRANTE);

        if (EDAD_ASPIRANTE > 0) { html_formato_entrevista = html_formato_entrevista.Replace("[EDAD_ASPIRANTE]", EDAD_ASPIRANTE.ToString() + " Años."); }
        else { html_formato_entrevista = html_formato_entrevista.Replace("[EDAD_ASPIRANTE]", "Desconocida."); }

        html_formato_entrevista = html_formato_entrevista.Replace("[DIRECCION_ASPIRANTE]", DIRECCION_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[TIPO_VIVIENDA_ASPIRANTE]", TIPO_VIVIENDA_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[CIUDAD_ASPIRANTE]", CIUDAD_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[SECTOR_ASPIRANTE]", SECTOR_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[ESTRATO_ASPIRANTE]", ESTRATO_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[TELEFONOS_ASPIRANTE]", TELEFONOS_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[ASPIRACION_SALARIAL_ASPIRANTE]", ASPIRACION_SALARIAL_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[ESTADO_CIVIL_ASPIRANTE]", ESTADO_CIVIL);

        html_formato_entrevista = html_formato_entrevista.Replace("[EMAIL_ASPIRANTE]", EMAIL_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[LIBRETA_MILITAR]", LIBRETA_MILITAR);
        // -----------------------------------

        // -----------------------------------
        html_formato_entrevista = html_formato_entrevista.Replace("[COMPOSICION_FAMILIAR_ASPIRANTE]", COMPOSICION_FAMILIAR_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[INFO_ACADEMICA_ASPIRANTE]", INFO_ACADEMICA_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[EXPERIENCIA_LAB_ASPIRANTE]", EXPERIENCIA_LAB_ASPIRANTE);
        // -----------------------------------

        // -----------------------------------
        html_formato_entrevista = html_formato_entrevista.Replace("[NIVEL_ESCOLARIDAD]", NIVEL_ESCOLARIDAD);
        html_formato_entrevista = html_formato_entrevista.Replace("[PROFESION_ASPIRANTE]", PROFESION_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[ESPECIALIZACION_ASPIRANTE]", ESPECIALIZACION_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[CABEZA_FAMILIA]", CABEZA_FAMILIA);
        html_formato_entrevista = html_formato_entrevista.Replace("[NUM_HIJOS]", NUM_HIJOS);
        // -----------------------------------

        //TABLA DE COMPOSICION FAMILIAR
        String html_tabla_composicion_familiar = "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
        html_tabla_composicion_familiar += "<tr>";
        html_tabla_composicion_familiar += "<td width=\"14%\" style=\"text-align:center; font-weight: bold;\">";
        html_tabla_composicion_familiar += "PARENTESCO";
        html_tabla_composicion_familiar += "</td>";
        html_tabla_composicion_familiar += "<td width=\"25%\" style=\"text-align:center; font-weight: bold;\">";
        html_tabla_composicion_familiar += "NOMBRES Y APELLIDOS";
        html_tabla_composicion_familiar += "</td>";
        html_tabla_composicion_familiar += "<td width=\"10%\" style=\"text-align:center; font-weight: bold; \">";
        html_tabla_composicion_familiar += "EDAD";
        html_tabla_composicion_familiar += "</td>";
        html_tabla_composicion_familiar += "<td width=\"20%\" style=\"text-align:center; font-weight: bold; \">";
        html_tabla_composicion_familiar += "¿A QUÉ SE DEDICA?";
        html_tabla_composicion_familiar += "</td>";
        html_tabla_composicion_familiar += "<td width=\"19%\" style=\"text-align:center; font-weight: bold; \">";
        html_tabla_composicion_familiar += "VIVE EN";
        html_tabla_composicion_familiar += "</td>";
        html_tabla_composicion_familiar += "<td width=\"12%\" style=\"text-align:center; font-weight: bold;\">";
        html_tabla_composicion_familiar += "VIVE CON EL CANDIDATO";
        html_tabla_composicion_familiar += "</td>";
        html_tabla_composicion_familiar += "</tr>";

        DataTable tablainfofamiliar = _hojasVida.ObtenerSelRegComposicionFamiliar(ID_ENTREVISTA);

        foreach(DataRow filaComposicion in tablainfofamiliar.Rows)
        {
            html_tabla_composicion_familiar += "<tr>";
            html_tabla_composicion_familiar += "<td width=\"14%\" style=\"text-align:left;\">";
            html_tabla_composicion_familiar += filaComposicion["ID_TIPO_FAMILIAR"].ToString().Trim();
            html_tabla_composicion_familiar += "</td>";
            html_tabla_composicion_familiar += "<td width=\"25%\" style=\"text-align:left;\">";
            html_tabla_composicion_familiar += filaComposicion["NOMBRES"].ToString().Trim() + " " + filaComposicion["APELLIDOS"].ToString().Trim();
            html_tabla_composicion_familiar += "</td>";
            html_tabla_composicion_familiar += "<td width=\"10%\" style=\"text-align:center;\">";
            try
            {
                html_tabla_composicion_familiar += _tools.ObtenerEdadDesdeFechaNacimiento(Convert.ToDateTime(filaComposicion["FECHA_NACIMIENTO"]));
            }
            catch
            {
                html_tabla_composicion_familiar += "Desconocida";
            }
            html_tabla_composicion_familiar += "</td>";
            html_tabla_composicion_familiar += "<td width=\"20%\" style=\"text-align:left;\">";
            html_tabla_composicion_familiar += filaComposicion["PROFESION"].ToString().Trim();
            html_tabla_composicion_familiar += "</td>";
            html_tabla_composicion_familiar += "<td width=\"19%\" style=\"text-align:left;\">";
            if (filaComposicion["ID_CIUDAD"].ToString().Trim() == "EXTRA")
            {
                html_tabla_composicion_familiar += "Extranjero";
            }
            else
            {
                html_tabla_composicion_familiar += filaComposicion["NOMBRE_CIUDAD"].ToString().Trim();
            }
            html_tabla_composicion_familiar += "</td>";
            html_tabla_composicion_familiar += "<td width=\"12%\" style=\"text-align:center;\">";
            if(filaComposicion["VIVE_CON_EL"].ToString().Trim().ToUpper() == "TRUE")
            {
                html_tabla_composicion_familiar += "SI";
            }
            else
            {
                html_tabla_composicion_familiar += "NO";
            }
            html_tabla_composicion_familiar += "</td>";
            html_tabla_composicion_familiar += "</tr>";
        }

        html_tabla_composicion_familiar += "</table>";
        html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_COMPOSICION_FAMILIAR]", html_tabla_composicion_familiar);

        //EDUCACION FORMAL
        String html_tabla_educacion_formal = "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
        html_tabla_educacion_formal += "<tr>";
        html_tabla_educacion_formal += "<td width=\"40%\" style=\"text-align:center; font-weight: bold;\">";
        html_tabla_educacion_formal += "Grado de Instrucción alcanzado:<\br>Especialización, Profesional, Bachiller.";
        html_tabla_educacion_formal += "</td>";
        html_tabla_educacion_formal += "<td width=\"25%\" style=\"text-align:center; font-weight: bold;\">";
        html_tabla_educacion_formal += "Institución";
        html_tabla_educacion_formal += "</td>";
        html_tabla_educacion_formal += "<td width=\"12%\" style=\"text-align:center; font-weight: bold; \">";
        html_tabla_educacion_formal += "Año";
        html_tabla_educacion_formal += "</td>";
        html_tabla_educacion_formal += "<td width=\"23%\" style=\"text-align:center; font-weight: bold; \">";
        html_tabla_educacion_formal += "Observaciones";
        html_tabla_educacion_formal += "</td>";
        html_tabla_educacion_formal += "</tr>";

        DataTable tablaEducacionFormal = _hojasVida.ObtenerSelRegInformacionAcademica(ID_ENTREVISTA, "FORMAL");

        foreach (DataRow filaEducacionFormal in tablaEducacionFormal.Rows)
        {
            html_tabla_educacion_formal += "<tr>";
            html_tabla_educacion_formal += "<td width=\"40%\" style=\"text-align:left;\">";
            html_tabla_educacion_formal += filaEducacionFormal["NOMBRE_NIVEL_ACADEMICO"].ToString().Trim();
            html_tabla_educacion_formal += "</td>";
            html_tabla_educacion_formal += "<td width=\"25%\" style=\"text-align:left;\">";
            html_tabla_educacion_formal += filaEducacionFormal["INSTITUCION"].ToString().Trim();
            html_tabla_educacion_formal += "</td>";
            html_tabla_educacion_formal += "<td width=\"12%\" style=\"text-align:center;\">";
            html_tabla_educacion_formal += filaEducacionFormal["ANNO"].ToString().Trim();
            html_tabla_educacion_formal += "</td>";
            html_tabla_educacion_formal += "<td width=\"23%\" style=\"text-align:justify;\">";
            html_tabla_educacion_formal += filaEducacionFormal["OBSERVACIONES"].ToString().Trim();
            html_tabla_educacion_formal += "</td>";
            html_tabla_educacion_formal += "</tr>";
        }

        html_tabla_educacion_formal += "</table>";
        html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_EDUCACION_FORMAL]", html_tabla_educacion_formal);

        //EDUCACION NO FORMAL
        String html_tabla_educacion_no_formal = "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
        html_tabla_educacion_no_formal += "<tr>";
        html_tabla_educacion_no_formal += "<td width=\"40%\" style=\"text-align:center; font-weight: bold;\">";
        html_tabla_educacion_no_formal += "Cursos libres - Diplomados";
        html_tabla_educacion_no_formal += "</td>";
        html_tabla_educacion_no_formal += "<td width=\"25%\" style=\"text-align:center; font-weight: bold;\">";
        html_tabla_educacion_no_formal += "Institución";
        html_tabla_educacion_no_formal += "</td>";
        html_tabla_educacion_no_formal += "<td width=\"12%\" style=\"text-align:center; font-weight: bold; \">";
        html_tabla_educacion_no_formal += "Duración";
        html_tabla_educacion_no_formal += "</td>";
        html_tabla_educacion_no_formal += "<td width=\"23%\" style=\"text-align:center; font-weight: bold; \">";
        html_tabla_educacion_no_formal += "Observaciones";
        html_tabla_educacion_no_formal += "</td>";
        html_tabla_educacion_no_formal += "</tr>";

        DataTable tablaEducacionNoFormal = _hojasVida.ObtenerSelRegInformacionAcademica(ID_ENTREVISTA, "NO FORMAL");

        foreach (DataRow filaEducacionNoFormal in tablaEducacionNoFormal.Rows)
        {
            html_tabla_educacion_no_formal += "<tr>";
            html_tabla_educacion_no_formal += "<td width=\"40%\" style=\"text-align:left;\">";
            html_tabla_educacion_no_formal += filaEducacionNoFormal["CURSO"].ToString().Trim();
            html_tabla_educacion_no_formal += "</td>";
            html_tabla_educacion_no_formal += "<td width=\"25%\" style=\"text-align:left;\">";
            html_tabla_educacion_no_formal += filaEducacionNoFormal["INSTITUCION"].ToString().Trim();
            html_tabla_educacion_no_formal += "</td>";
            html_tabla_educacion_no_formal += "<td width=\"12%\" style=\"text-align:center;\">";
            html_tabla_educacion_no_formal += filaEducacionNoFormal["DURACION"].ToString().Trim() + " " + filaEducacionNoFormal["UNIDAD_DURACION"].ToString().Trim();
            html_tabla_educacion_no_formal += "</td>";
            html_tabla_educacion_no_formal += "<td width=\"23%\" style=\"text-align:justify;\">";
            html_tabla_educacion_no_formal += filaEducacionNoFormal["OBSERVACIONES"].ToString().Trim();
            html_tabla_educacion_no_formal += "</td>";
            html_tabla_educacion_no_formal += "</tr>";
        }

        html_tabla_educacion_no_formal += "</table>";
        html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_EDUCACION_NO_FORMAL]", html_tabla_educacion_no_formal);

        //EXPERIENCIA LABORAL
        String html_tabla_experiencia_laboral = "";
        DataTable tablaExperiencia = _hojasVida.ObtenerSelRegExperienciaLaboral(ID_ENTREVISTA);

        Int32 contador = 1;
        foreach (DataRow filaExperienciaLaboral in tablaExperiencia.Rows)
        {
            if (contador == 1)
            {
                html_tabla_experiencia_laboral += "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
            }
            else
            {
                html_tabla_experiencia_laboral += "<br><table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
            }

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += contador.ToString() + ". EMPRESA:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += filaExperienciaLaboral["EMPRESA"].ToString().Trim();
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += "CARGO DESEMPEÑADO:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += filaExperienciaLaboral["CARGO"].ToString().Trim();
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += "FUNCIONES REALIZADAS:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += filaExperienciaLaboral["FUNCIONES"].ToString().Trim();
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += "FECHA INGRESO:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += Convert.ToDateTime(filaExperienciaLaboral["FECHA_INGRESO"]).ToShortDateString();
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += "FECHA RETIRO:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            try
            {
                html_tabla_experiencia_laboral += Convert.ToDateTime(filaExperienciaLaboral["FECHA_RETIRO"]).ToShortDateString();
            }
            catch
            {
                html_tabla_experiencia_laboral += "";
            }
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += "TIEMPO TRABAJADO:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            Boolean correcto = true;
            DateTime fechaIngreso;
            DateTime fechaRetiro;
            try
            {
                fechaIngreso = Convert.ToDateTime(filaExperienciaLaboral["FECHA_INGRESO"]);
            }
            catch
            {
                correcto = false;
                fechaIngreso = new DateTime();
            }

            if (correcto == true)
            {
                Boolean conContratoVigente = true;
                try
                {
                    fechaRetiro = Convert.ToDateTime(filaExperienciaLaboral["FECHA_RETIRO"]);
                    conContratoVigente = false;
                }
                catch
                {
                    conContratoVigente = true;
                    fechaRetiro = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                }

                if (fechaRetiro < fechaIngreso)
                {
                    html_tabla_experiencia_laboral += "Error en fechas.";
                }
                else
                {
                    if (conContratoVigente == true)
                    {
                        html_tabla_experiencia_laboral += "Lleva trabajando: " + _tools.DiferenciaFechas(fechaRetiro, fechaIngreso);
                    }
                    else
                    {
                        html_tabla_experiencia_laboral += "Trabajó: " + _tools.DiferenciaFechas(fechaRetiro, fechaIngreso);
                    }
                }
            }
            else
            {
                html_tabla_experiencia_laboral += "Desconocido.";
            }
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += "MOTIVO_RETIRO:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += filaExperienciaLaboral["MOTIVO_RETIRO"].ToString().Trim();
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "<tr>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += "ULTIMO SALARIO:";
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "<td width=\"50%\" style=\"text-align:left;\">";
            html_tabla_experiencia_laboral += String.Format("$ {0:N2}", Convert.ToDecimal(filaExperienciaLaboral["ULTIMO_SALARIO"]));
            html_tabla_experiencia_laboral += "</td>";
            html_tabla_experiencia_laboral += "</tr>";

            html_tabla_experiencia_laboral += "</table>";

            contador += 1;
        }

        html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_EXPERIENCIA_LABORAL]", html_tabla_experiencia_laboral);

        //ahora: si es entrevista por produccion se debe determinar que pruebas se han aplicado al candidato
        //y mostrarlas en el informe de seleccion
        //lo mismo con habilidades / competencias

        pruebaPerfil _pruebaPerfil = new pruebaPerfil(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        FabricaAssesment _fabrica = new FabricaAssesment(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaPruebas = new DataTable();
        DataTable tablaAssesmentCenter = new DataTable();
        DataTable tablaCompetencias = new DataTable();
        String TIPO_ENTREVISTA = String.Empty;
        if (ID_PERFIL <= 0)
        {
            //ES ENTREVISTA POR PRODUCCION
            tablaPruebas = _pruebaPerfil.ObtenerAplicadasAIdSolicitudConResultados(ID_SOLICITUD);
            tablaCompetencias = _fabrica.ObtenerAplicacionCompetenciasPorSolicitudIngreso(ID_SOLICITUD);
            if (tablaCompetencias.Rows.Count <= 0)
            {
                TIPO_ENTREVISTA = "B";
            }
            else
            {
                TIPO_ENTREVISTA = "A";
            }
        }
        else
        {
            //es entrevista asociada a perfil entonces cargamos lo pertinente a ese perfil
            tablaPruebas = _pruebaPerfil.ObtenerPorIdPerfilConResultadosIdSolicitud(ID_PERFIL, ID_SOLICITUD);

            if (ID_ASSESMENT_CENTER > 0)
            {
                TIPO_ENTREVISTA = "A";
                //se tiene un assesmentcenter associado
                tablaAssesmentCenter = _fabrica.ObtenerAssesmentCentePorId(ID_ASSESMENT_CENTER);
                tablaCompetencias = _fabrica.ObtenerCompetenciasAssesmentCenteActivos(ID_ASSESMENT_CENTER, ID_SOLICITUD);
            }
            else
            {
                TIPO_ENTREVISTA = "B";
            }
        }

        //AHORA SI SEGUN LOS ObTENIDOS DE LAS TABLAS SE MUESTRA EN EL INFORME.
        if (tablaPruebas.Rows.Count > 0)
        {
            String html_resultados_pruebas;
            html_resultados_pruebas = "<br />";
            html_resultados_pruebas += "<div style=\"text-align: left; margin: 0 0 0 20px; text-decoration: underline; font-weight: bold;\">";
            html_resultados_pruebas += "RESULTADO DE PRUEBAS PSICOTÉCNICAS";
            html_resultados_pruebas += "</div>";

            for (int i = 0; i < tablaPruebas.Rows.Count; i++)
            {
                DataRow filaPrueba = tablaPruebas.Rows[i];

                String NOM_PRUEBA = filaPrueba["NOM_PRUEBA"].ToString().Trim();
                String RESULTADO = filaPrueba["RESULTADOS"].ToString().Trim();

                html_resultados_pruebas += "<br />";
                html_resultados_pruebas += "<div style=\"text-align: left; margin: 0 0 0 20px; font-weight: bold; font-size:9px;\">";
                html_resultados_pruebas += NOM_PRUEBA;
                html_resultados_pruebas += "</div>";
                html_resultados_pruebas += "<div style=\"text-align: justify;\">";
                if (String.IsNullOrEmpty(RESULTADO) == false)
                {
                    html_resultados_pruebas += RESULTADO;
                }
                else
                {
                    html_resultados_pruebas += "Desconocido.";
                }
                html_resultados_pruebas += "</div>";
            }

            html_resultados_pruebas += "<br />";
            html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_RESULTADO_PRUEBAS]", html_resultados_pruebas);
        }
        else
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_RESULTADO_PRUEBAS]", "<br />");
        }

        //FORMATO DE ASSESMENT CENTER
        if (TIPO_ENTREVISTA.Contains("A") == true)
        {
            String NOMBRE_ASSESMENT = "";
            if (tablaAssesmentCenter.Rows.Count > 0)
            {
                DataRow filaAssesment = tablaAssesmentCenter.Rows[0];
                NOMBRE_ASSESMENT = filaAssesment["NOMBRE_ASSESMENT"].ToString().Trim();
            }

            //En esta variable cargamos el documento plantilla por habilidades
            archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\formato_evaluacion_assesmentcenter.htm"));

            String html_formato_assesment_center = archivo_original.ReadToEnd();

            archivo_original.Dispose();
            archivo_original.Close();

            String html_tabla_assesment = "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"100%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
            html_tabla_assesment += "<tr>";
            html_tabla_assesment += "<td width=\"25%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_assesment += "COMPETENCIA / HABILIDAD";
            html_tabla_assesment += "</td>";
            html_tabla_assesment += "<td width=\"35%\" style=\"text-align:center; font-weight: bold;\">";
            html_tabla_assesment += "CALIFICACIÓN";
            html_tabla_assesment += "</td>";
            html_tabla_assesment += "<td width=\"40%\" style=\"text-align:center; font-weight: bold; \">";
            html_tabla_assesment += "OBSERVACIONES";
            html_tabla_assesment += "</td>";
            html_tabla_assesment += "</tr>";

            foreach (DataRow filaCalificacionCompetencias in tablaCompetencias.Rows)
            {
                html_tabla_assesment += "<tr>";
                html_tabla_assesment += "<td width=\"25%\" style=\"text-align:left; \">";
                html_tabla_assesment += filaCalificacionCompetencias["COMPETENCIA"].ToString().Trim();
                html_tabla_assesment += "</td>";
                html_tabla_assesment += DevuelveTdsConCalificacionSegunDataRow(filaCalificacionCompetencias);
                html_tabla_assesment += "<td width=\"40%\" style=\"text-align:justify; \">";
                html_tabla_assesment += filaCalificacionCompetencias["OBSERVACIONES"].ToString().Trim();
                html_tabla_assesment += "</td>";
            }

            html_tabla_assesment += "</table>";

            html_formato_assesment_center = html_formato_assesment_center.Replace("[NOMBRE_ASSESMENT]", NOMBRE_ASSESMENT);
            html_formato_assesment_center = html_formato_assesment_center.Replace("[TABLA_DE_ASSESMENT_CENTER]", html_tabla_assesment);
            html_formato_entrevista = html_formato_entrevista.Replace("[FORMATO_EVALUACION_ASSESMENTCENTER]", html_formato_assesment_center);
        }
        else
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[FORMATO_EVALUACION_ASSESMENTCENTER]", "");
        }

        // concepto general
        html_concepto = html_concepto.Replace("[CONCEPTO_GENERAL]", CONCEPTO_GENERAL);
        // concepto general
        html_formato_entrevista = html_formato_entrevista.Replace("[CONCEPTO_GENERAL]", html_concepto);

        // USUARIO QUE HIZO LA ENTREVISTA
        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaUsuario = _usuario.ObtenerUsuarioPorUsuLog(USUARIO_ENTREVISTADOR); //ACA VA ES EL DE LA ENTREVISTA
        DataRow filaUsuario = tablaUsuario.Rows[0];

        if (filaUsuario["USU_TIPO"].ToString().ToUpper() == "PLANTA")
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[NOMBRE_PSICOLOGO]", filaUsuario["NOMBRES"].ToString().Trim() + " " + filaUsuario["APELLIDOS"].ToString().Trim());
        }
        else
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[NOMBRE_PSICOLOGO]", filaUsuario["NOMBRES_EXTERNO"].ToString().Trim() + " " + filaUsuario["APELLIDOS_EXTERNO"].ToString().Trim());
        }

        html_formato_entrevista = html_formato_entrevista.Replace("[CARGO_SICOLOGO]", "Psicólogo de Selección");

        html_formato_entrevista += 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_entrevista);
            }

            //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();
        }
    }
    /// <summary>
    /// hecho por cesar pulido
    /// el dia 9 de diciembre de 2012
    /// para obtener el archivo de las clausulas
    /// </summary>
    /// <returns></returns>
    public byte[] GenerarPDFClausulas(Decimal ID_CONTRATO)
    {
        //obtenemos la informacion necesaria de las clausulas
        registroContrato _registroContrato = new registroContrato(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoClausulas = _registroContrato.ObtenerInfoParaImprimirClausulas(ID_CONTRATO);

        if (tablaInfoClausulas.Rows.Count > 0)
        {
            tools _tools = new tools();

            //como existen clausulas antes de mostrarlas se debe actualizar el estado de impresion de clausulas
            DataTable tablaCon = _registroContrato.ObtenerConRegContratosPorRegistro(Convert.ToInt32(ID_CONTRATO));

            DataRow fila = tablaCon.Rows[0];

            //En esta variable cargamos el documento plantilla
            StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\clausulas.htm"));

            String html_clausula = archivo_original.ReadToEnd();

            archivo_original.Dispose();
            archivo_original.Close();

            String html_completo = "<html><body>";

            Int32 contadorClausulas = 0;

            //tenemos que recorrer todas las clausulas e imprimirlas en hojas diferentes pero un mismo documento
            foreach (DataRow filaClausula in tablaInfoClausulas.Rows)
            {
                //como se tiene un clausula entonces al html_compleo le adicionamos una plantilla contenido de clausula
                if (contadorClausulas == 0)
                {
                    html_completo = html_clausula;
                }
                else
                {
                    html_completo += "<div>linea para paginacion de pdf</div>";
                    html_completo += html_clausula;
                }

                //despues de haber agregado la plantilla se procede a reemplazar los tags
                if (Session["idEmpresa"].ToString() == "1")
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_SERTEMPO);
                }
                else
                {
                    html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_EYS);
                }
                html_completo = html_completo.Replace("[NOMBRE_TRABAJADOR]", filaClausula["NOMBRES"].ToString().Trim() + " " + filaClausula["APELLIDOS"].ToString().Trim());
                html_completo = html_completo.Replace("[NOMBRE_CLAUSULA]", filaClausula["NOMBRE"].ToString().Trim());
                html_completo = html_completo.Replace("[ENCABEZADO_CLAUSULA]", filaClausula["ENCABEZADO"].ToString().Trim());
                html_completo = html_completo.Replace("[CONTENIDO_CLAUSULA]", filaClausula["DESCRIPCION"].ToString().Trim());
                html_completo = html_completo.Replace("[CIUDAD_FIRMA]", "BOGOTA");
                html_completo = html_completo.Replace("[DIAS]", DateTime.Now.Day.ToString());
                html_completo = html_completo.Replace("[MES]", _tools.obtenerNombreMes(DateTime.Now.Month));
                html_completo = html_completo.Replace("[ANNO]", DateTime.Now.Year.ToString());

                contadorClausulas += 1;
            }

            html_completo += "</body></html>";

            //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), 40, 40, 80, 40);

            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 = "clausula";

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

                //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();
            }
        }
        else
        {
            return null;
        }
    }
    private void previsualizar_clausula(Decimal ID_CON_REG_CLAUSULAS_PERFIL)
    {
        condicionesContratacion _condicionesContratacion = new condicionesContratacion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoClausula = _condicionesContratacion.obtenerClausulasPorIdCluasula(ID_CON_REG_CLAUSULAS_PERFIL);
        DataRow filaInfo = tablaInfoClausula.Rows[0];

        StreamReader archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\clausulas.htm"));

        tools _tools = new tools();

        String html_completo = "<html><body>";
        html_completo += archivo.ReadToEnd();
        html_completo += "</body></html>";

        archivo.Dispose();
        archivo.Close();

        if (Session["idEmpresa"].ToString() == "1")
        {
            html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_SERTEMPO);
        }
        else
        {
            html_completo = html_completo.Replace("[NOMBRE_EMPRESA]", tabla.VAR_NOMBRE_EYS);
        }
        html_completo = html_completo.Replace("[NOMBRE_TRABAJADOR]", "NOMBRE DEL TRABAJADOR");
        html_completo = html_completo.Replace("[NOMBRE_CLAUSULA]", filaInfo["NOMBRE"].ToString());
        html_completo = html_completo.Replace("[ENCABEZADO_CLAUSULA]", filaInfo["ENCABEZADO"].ToString());
        html_completo = html_completo.Replace("[CONTENIDO_CLAUSULA]", filaInfo["DESCRIPCION"].ToString());

        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaInfoUsuario = _usuario.ObtenerInicioSesionPorUsuLog(Session["USU_LOG"].ToString());
        if (tablaInfoUsuario.Rows.Count <= 0)
        {
            html_completo = html_completo.Replace("[CIUDAD_FIRMA]", "Desconocida");
        }
        else
        {
            DataRow filaInfoUsuario = tablaInfoUsuario.Rows[0];
            html_completo = html_completo.Replace("[CIUDAD_FIRMA]", filaInfoUsuario["NOMBRE_CIUDAD"].ToString());
        }

        html_completo = html_completo.Replace("[DIAS]", DateTime.Now.Day.ToString());
        html_completo = html_completo.Replace("[MES]", _tools.obtenerNombreMes(DateTime.Now.Month));
        html_completo = html_completo.Replace("[ANNO]", DateTime.Now.Year.ToString());

        String filename = "previsulizador_clausula";

        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + filename + ".pdf");

        Response.Clear();
        Response.ContentType = "application/pdf";

        iTextSharp.text.Document document = new iTextSharp.text.Document(PageSize.A4, 40, 40, 80, 40);

        iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);

        pdfEvents PageEventHandler = new pdfEvents();
        writer.PageEvent = PageEventHandler;

        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 = "clausula";

        document.Open();

        String tempFile = Path.GetTempFileName();

        using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
        {
            tempwriter.Write(html_completo);
        }

        List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet());
        foreach (IElement element in htmlarraylist)
        {
            document.Add(element);
        }

        document.Close();
        writer.Close();

        Response.End();

        File.Delete(tempFile);
    }
    private void ImprimirContratoO_L_COMPLETO(DataRow filaInfoContrato)
    {
        tools _tools = new tools();

        Boolean CarnetIncluido = CheckBox_CON_CARNET_APARTE.Checked;

        StreamReader archivo;

        if (Session["idEmpresa"].ToString() == "1")
        {
            if (CarnetIncluido == true)
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_sertempo_obra_labor.htm"));
            }
            else
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_sertempo_obra_labor_carnet_aparte.htm"));
            }
        }
        else
        {
            if (CarnetIncluido == true)
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_eys_labor_contratada.htm"));
            }
            else
            {
                archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\contrato_eys_labor_contratada_carnet_aparte.htm"));
            }
        }

        String html = archivo.ReadToEnd();

        archivo.Dispose();
        archivo.Close();

        String filename;

        if (Session["idEmpresa"].ToString() == "1")
        {
            html = html.Replace("[DIR_LOGO_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/logo_sertempo.png");
            html = html.Replace("[MENSAJE_LOGO]", "SERVICIOS TEMPORALES PROFESIONALES");
            html = html.Replace("[NOMBRE_EMPLEADOR]", tabla.VAR_NOMBRE_SERTEMPO);
            html = html.Replace("[DOMICILO_EMPLEADOR]", tabla.VAR_DOMICILIO_SERTEMPO);
            html = html.Replace("[DESCRIPCION_CARGO]", filaInfoContrato["DSC_FUNCIONES"].ToString().Trim().ToUpper());
            html = html.Replace("[SERVICIO_RESPECTIVO]", filaInfoContrato["DESCRIPCION"].ToString().Trim().ToUpper());
            html = html.Replace("[EMPRESA_USUARIA]", filaInfoContrato["RAZ_SOCIAL"].ToString().Trim().ToUpper());
            html = html.Replace("[DESCRIPCION_SALARIO]", filaInfoContrato["DESCRIPCION_SALARIO"].ToString().Trim().ToUpper());
            html = html.Replace("[DIR_FIRMA_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/firma_autos_recomendacion.jpg");
            filename = "contrato_sertempo";
        }
        else
        {
            html = html.Replace("[DIR_LOGO_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/logo_eficiencia.jpg");
            html = html.Replace("[NOMBRE_EMPLEADOR]", tabla.VAR_NOMBRE_EYS);
            html = html.Replace("[DOMICILO_EMPLEADOR]", tabla.VAR_DOMICILIO_EYS);
            html = html.Replace("[FUNCION_CARGO]", filaInfoContrato["DSC_FUNCIONES"].ToString().Trim().ToUpper());
            html = html.Replace("[ACTIVIDAD_CONTRATADA]", filaInfoContrato["DSC_FUNCIONES"].ToString().Trim().ToUpper());
            html = html.Replace("[EMPRESA_DESTACA]", filaInfoContrato["RAZ_SOCIAL"].ToString().Trim().ToUpper());
            html = html.Replace("[DESCRIPCION_SALARIO]", filaInfoContrato["DESCRIPCION_SALARIO"].ToString().Trim().ToUpper());
            html = html.Replace("[DIR_FIRMA_EMPLEADOR]", tabla.DIR_IMAGENES_PARA_PDF + "/firma_autos_recomendacion.jpg");
            filename = "contrato_eys";
        }

        html = html.Replace("[CARGO_TRABAJADOR]", filaInfoContrato["NOM_OCUPACION"].ToString().Trim().ToUpper());
        html = html.Replace("[NOMBRE_TRABAJADOR]", filaInfoContrato["APELLIDOS"].ToString().Trim().ToUpper() + " " + filaInfoContrato["NOMBRES"].ToString().Trim().ToUpper());
        html = html.Replace("[TIPO_DOCUMENTO_IDENTIDAD]", filaInfoContrato["TIP_DOC_IDENTIDAD"].ToString().Trim().ToUpper());
        html = html.Replace("[DOC_IDENTIFICACION]", filaInfoContrato["NUM_DOC_IDENTIDAD"].ToString().Trim().ToUpper());
        html = html.Replace("[SALARIO]", String.Format("$ {0:N2}", Convert.ToDecimal(filaInfoContrato["SALARIO"]).ToString()));
        html = html.Replace("[PERIODO_PAGO]", DropDownList_PERIODO_PAGO.SelectedItem.Text);
        html = html.Replace("[FECHA_INICIACION]", Convert.ToDateTime(filaInfoContrato["FECHA_INICIA"]).ToLongDateString());
        html = html.Replace("[CARNE_VALIDO_HASTA]", Convert.ToDateTime(filaInfoContrato["FECHA_TERMINA"]).ToLongDateString());

        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaInfoUsuario = _usuario.ObtenerInicioSesionPorUsuLog(Session["USU_LOG"].ToString());
        if (tablaInfoUsuario.Rows.Count <= 0)
        {
            html = html.Replace("[CIUDAD_FIRMA]", "Desconocida");
        }
        else
        {
            DataRow filaInfoUsuario = tablaInfoUsuario.Rows[0];
            html = html.Replace("[CIUDAD_FIRMA]", filaInfoUsuario["NOMBRE_CIUDAD"].ToString());
        }

        DateTime fechaHoy = DateTime.Now;
        html = html.Replace("[DIAS_FIRMA]", fechaHoy.Day.ToString());
        html = html.Replace("[MES_FIRMA]", _tools.obtenerNombreMes(fechaHoy.Month));
        html = html.Replace("[ANNO_FIRMA]", fechaHoy.Year.ToString());

        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + filename + ".pdf");

        Response.Clear();
        Response.ContentType = "application/pdf";

        iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(612, 936), 15, 15, 10, 10);

        iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);

        pdfEvents PageEventHandler = new pdfEvents();
        writer.PageEvent = PageEventHandler;

        PageEventHandler.tipoDocumento = "contrato";

        document.Open();

        String tempFile = Path.GetTempFileName();

        using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
        {
            tempwriter.Write(html);
        }

        List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet());
        foreach (IElement element in htmlarraylist)
        {
            document.Add(element);
        }

        document.Close();
        writer.Close();

        Response.End();

        File.Delete(tempFile);
    }
    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 ImprimirContratoO_L_PREIMPRESO(DataRow filaInfoContrato)
    {
        tools _tools = new tools();

        Boolean CarnetIncluido = CheckBox_CON_CARNET_APARTE.Checked;

        String filename = "plantilla_contrato_preimpreso_obra_labor_sertempo_eys";

        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + filename + ".pdf");

        Response.Clear();
        Response.ContentType = "application/pdf";

        iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(ancho, alto), v_pixeles(15), v_pixeles(15), v_pixeles(15), v_pixeles(15));

        iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);

        pdfEvents PageEventHandler = new pdfEvents();
        writer.PageEvent = PageEventHandler;

        document.Open();

        String LABORA_EN = filaInfoContrato["RAZ_SOCIAL"].ToString().Trim().ToUpper();
        String CARGO = filaInfoContrato["NOM_OCUPACION"].ToString().Trim().ToUpper();
        String CC = filaInfoContrato["NUM_DOC_IDENTIDAD"].ToString().Trim().ToUpper();
        String NOMBRE = filaInfoContrato["APELLIDOS"].ToString().Trim().ToUpper() + " " + filaInfoContrato["NOMBRES"].ToString().Trim().ToUpper();
        String FIRMA_EMPLEADO = String.Empty;
        String VALIDO_HASTA = Convert.ToDateTime(filaInfoContrato["FECHA_TERMINA"]).ToLongDateString();

        String EMPRESA_USUARIA = filaInfoContrato["RAZ_SOCIAL"].ToString().Trim().ToUpper();
        String FECHA_INICIACION = Convert.ToDateTime(filaInfoContrato["FECHA_INICIA"]).ToLongDateString();
        String SALARIO = "$ " + String.Format("{0:N2}",Convert.ToDecimal(filaInfoContrato["SALARIO"]).ToString());

        String PERIODO_PAGO = DropDownList_PERIODO_PAGO.SelectedItem.Text;

        String SERVICIO_RESPECTIVO = filaInfoContrato["DESCRIPCION"].ToString().Trim().ToUpper();
        String DESCRIPCION_CARGO = filaInfoContrato["DSC_FUNCIONES"].ToString().Trim().ToUpper();
        String NOMBRE_TRABAJADOR = filaInfoContrato["APELLIDOS"].ToString().Trim().ToUpper() + " " + filaInfoContrato["NOMBRES"].ToString().Trim().ToUpper();
        String CC_TRABAJADOR = filaInfoContrato["NUM_DOC_IDENTIDAD"].ToString().Trim().ToUpper();
        String CARGO_TRABAJADOR = filaInfoContrato["NOM_OCUPACION"].ToString().Trim().ToUpper();

        String DOMICILIO_EMPLEADOR;
        if (Session["idEmpresa"].ToString() == "1")
        {
            DOMICILIO_EMPLEADOR = tabla.VAR_DOMICILIO_SERTEMPO;
        }
        else
        {
            DOMICILIO_EMPLEADOR = tabla.VAR_DOMICILIO_EYS;
        }

        String DIAS = DateTime.Now.Day.ToString();
        String MES = _tools.obtenerNombreMes(DateTime.Now.Month);
        String ANIO = DateTime.Now.Year.ToString().Substring(2, 2);

        Font letra;
        Phrase texto;
        PdfPTable tablaPdf;
        PdfPCell celda;

        float escalaFirma = 80;
        String dirImagenFirma;
        if (Session["idEmpresa"].ToString() == "1")
        {
            dirImagenFirma = Server.MapPath("~/imagenes/reportes/firma_contrato_empleador_sertempo.jpg");
        }
        else
        {
            dirImagenFirma = Server.MapPath("~/imagenes/reportes/firma_contrato_empleador_eys.jpg");
        }
        iTextSharp.text.Image imagenFirma = iTextSharp.text.Image.GetInstance(dirImagenFirma);
        imagenFirma.ScalePercent(escalaFirma);

        PdfContentByte cb = writer.DirectContent;

        if (CarnetIncluido == true)
        {
            cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false), 7);
            cb.BeginText();
            cb.SetTextMatrix(v_pixeles(17), v_pixeles(10));
            cb.ShowText(LABORA_EN);
            cb.EndText();
            cb.BeginText();
            cb.SetTextMatrix(v_pixeles(17), v_pixeles(15));
            cb.ShowText(CARGO);
            cb.EndText();
            cb.BeginText();
            cb.SetTextMatrix(v_pixeles(17), v_pixeles(19));
            cb.ShowText(CC);
            cb.EndText();
            cb.BeginText();
            cb.SetTextMatrix(v_pixeles(17), v_pixeles(24));
            cb.ShowText(NOMBRE);
            cb.EndText();
            cb.BeginText();
            cb.SetTextMatrix(v_pixeles(133), v_pixeles(53));
            cb.ShowText(FIRMA_EMPLEADO);
            cb.EndText();
            cb.BeginText();
            cb.SetTextMatrix(v_pixeles(133), v_pixeles(57));
            cb.ShowText(VALIDO_HASTA);
            cb.EndText();
        }

        cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false), 8);
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(10), v_pixeles(234));
        cb.ShowText(EMPRESA_USUARIA);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(140), v_pixeles(234));
        cb.ShowText(FECHA_INICIACION);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(10), v_pixeles(242));
        cb.ShowText(SALARIO);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(140), v_pixeles(242));
        cb.ShowText(PERIODO_PAGO);
        cb.EndText();
        tablaPdf = new PdfPTable(1);
        tablaPdf.TotalWidth = document.PageSize.Width - v_pixeles(20);
        letra = new Font(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false), 8);
        texto = new Phrase(SERVICIO_RESPECTIVO, letra);
        celda = new PdfPCell(texto);
        celda.Border = 0;
        celda.BorderWidth = 0;
        celda.HorizontalAlignment = 3;
        tablaPdf.AddCell(celda);
        tablaPdf.WriteSelectedRows(0, -1, v_pixeles(9), v_pixeles(259), cb);
        tablaPdf = new PdfPTable(1);
        tablaPdf.TotalWidth = document.PageSize.Width - v_pixeles(20);
        letra = new Font(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false), 8);
        texto = new Phrase(DESCRIPCION_CARGO, letra);
        celda = new PdfPCell(texto);
        celda.Border = 0;
        celda.BorderWidth = 0;
        celda.HorizontalAlignment = 3;
        tablaPdf.AddCell(celda);
        tablaPdf.WriteSelectedRows(0, -1, v_pixeles(9), v_pixeles(277), cb);
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(10), v_pixeles(282));
        cb.ShowText(NOMBRE_TRABAJADOR);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(140), v_pixeles(282));
        cb.ShowText(CC_TRABAJADOR);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(10), v_pixeles(290));
        cb.ShowText(CARGO_TRABAJADOR);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(98), v_pixeles(299));
        cb.ShowText(DOMICILIO_EMPLEADOR);
        cb.EndText();

        document.NewPage();

        cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false), 6);
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(45), v_pixeles(198));
        cb.ShowText(DIAS);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(83), v_pixeles(198));
        cb.ShowText(MES);
        cb.EndText();
        cb.BeginText();
        cb.SetTextMatrix(v_pixeles(122), v_pixeles(198));
        cb.ShowText(ANIO);
        cb.EndText();

        tablaPdf = new PdfPTable(1);
        tablaPdf.TotalWidth = document.PageSize.Width - document.LeftMargin - document.RightMargin;
        celda = new PdfPCell(imagenFirma);
        celda.Border = 0;
        celda.BorderWidth = 0;
        tablaPdf.AddCell(celda);
        tablaPdf.WriteSelectedRows(0, -1, v_pixeles(30), v_pixeles(111) + imagenFirma.Height, cb);

        document.Close();
        writer.Close();

        Response.End();
    }
    protected void Button_IMPRIMIR_AUTOS_Click(object sender, EventArgs e)
    {
        Decimal ID_SOLICITUD = Convert.ToDecimal(TextBox_ID_SOLICITUD.Text);
        Decimal ID_REQUISICION = Convert.ToDecimal(HiddenField_ID_REQUERIMIENTO.Value);
        String EMPRESA = null;

        Boolean hayAutos = false;
        String armadoDeAutos = "";

        ordenExamenes _ordenes = new ordenExamenes(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaOrdenes = _ordenes.ObtenerConRegOrdenExamenPorSolicitud(Convert.ToInt32(ID_REQUISICION), Convert.ToInt32(ID_SOLICITUD));
        foreach (DataRow filaExamenes in tablaOrdenes.Rows)
        {
            if (!(String.IsNullOrEmpty(filaExamenes["OBSERVACIONES"].ToString().Trim())))
            {
                if (hayAutos == false)
                {
                    armadoDeAutos = filaExamenes["OBSERVACIONES"].ToString().Trim();
                }
                else
                {
                    armadoDeAutos += "; " + filaExamenes["OBSERVACIONES"].ToString().Trim();
                }
                hayAutos = true;
            }
        }

        if (hayAutos)
        {

            radicacionHojasDeVida _sol = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            DataTable tablaSol = _sol.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
            DataRow filaSol = tablaSol.Rows[0];

            DateTime FECHA_AUTO = DateTime.Now;
            String NOMBRE_TRABAJADOR = TextBox_NOMBRES.Text.Trim() + " " + TextBox_APELLIDOS.Text.Trim();
            String TELEFONO_TRABAJADOR = TextBox_TEL_ASPIRANTE.Text.Trim();
            String TIPO_DOCUMENTO_IDENTIDAD = DropDownList_TIP_DOC_IDENTIDAD.SelectedValue;
            String NUMERO_DOCUMENTO_IDENTIDAD = TextBox_NUM_DOC_IDENTIDAD.Text.Trim();
            String AUTOS_RECOMENDACION = armadoDeAutos;
            String NOMBRE_EMPLEADOR = null;
            if (Session["idEmpresa"].ToString() == "1")
            {
                NOMBRE_EMPLEADOR = tabla.VAR_NOMBRE_SERTEMPO;
            }
            else
            {
                NOMBRE_EMPLEADOR = tabla.VAR_NOMBRE_EYS;
            }

            StreamReader archivo = new StreamReader(Server.MapPath(@"~\plantillas_reportes\autos_recomendacion.htm"));

            String html = archivo.ReadToEnd();

            archivo.Dispose();
            archivo.Close();

            html = html.Replace("[FECHA_AUTO]", FECHA_AUTO.ToLongDateString());
            html = html.Replace("[NOMBRE_TRABAJADOR]", NOMBRE_TRABAJADOR);
            html = html.Replace("[TELEFONO_TRABAJADOR]", TELEFONO_TRABAJADOR);
            html = html.Replace("[TIPO_DOCUMENTO_IDENTIDAD]", TIPO_DOCUMENTO_IDENTIDAD);
            html = html.Replace("[NUMERO_DOCUMENTO_IDENTIDAD]", NUMERO_DOCUMENTO_IDENTIDAD);
            html = html.Replace("[AUTOS_RECOMENDACION]", AUTOS_RECOMENDACION);
            html = html.Replace("[NOMBRE_EMPLEADOR]", NOMBRE_EMPLEADOR);
            html = html.Replace("[DIR_FIRMA_SALUD]", tabla.DIR_IMAGENES_PARA_PDF + "/firma_autos_recomendacion.jpg");

            String filename = "auto_recomendacion_" + ID_SOLICITUD.ToString();

            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + filename + ".pdf");

            Response.Clear();
            Response.ContentType = "application/pdf";

            iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(612, 397), 25, 25, 75, 30);

            iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);

            pdfEvents PageEventHandler = new pdfEvents();
            writer.PageEvent = PageEventHandler;

            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 = "autos_recomendacion";

            document.Open();

            String tempFile = Path.GetTempFileName();

            using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
            {
                tempwriter.Write(html);
            }

            List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet());
            foreach (IElement element in htmlarraylist)
            {
                document.Add(element);
            }

            document.Close();
            writer.Close();

            Response.End();

            File.Delete(tempFile);
        }
    }