public void etiquetar() { List <DO_SolicitudEtiquetado> solicitudes = DataManagerControlDocumentos.GetSolicitudEtiquetar(0); Console.WriteLine("Hay " + solicitudes.Count + " Solicitudes pendientes para etiquetar."); foreach (var solicitud in solicitudes) { Console.Beep(5000, 1000); List <Archivo> archivos = DataManagerControlDocumentos.GetArchivo(solicitud.IdVersion); BaseFont bfTimes = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false); DO_ClassificationLevel classificationLevel = DataManagerControlDocumentos.GetClassificationLevel(solicitud.IdClasificationLevel); foreach (var archivo in archivos) { int noCopias = DataManagerControlDocumentos.GetCopias(solicitud.IdVersion); DO_Respuesta respuesta = setCLJES(archivo.archivo, bfTimes, classificationLevel.ClassificationLevel, noCopias); byte[] archivoEtiquetado = respuesta.Archivo; if (respuesta.idRespuesta == 1) { File.WriteAllBytes(archivo.ruta, archivoEtiquetado); DataManagerControlDocumentos.UpdateVersion(solicitud.IdVersion, solicitud.IdClasificationLevel, solicitud.IdUsuario); DataManagerControlDocumentos.UpdateSolicitudEtiquetar(solicitud.IdSolicitud, 1); DataManagerControlDocumentos.UpdateNoCopias(solicitud.IdVersion, 0); Documento objDocumento = DataManagerControlDocumentos.GetDocumento(solicitud.IdVersion); Version version = DataManagerControlDocumentos.GetVersion(solicitud.IdVersion); String title = "Control de documentos - Etiquetado de documento : " + objDocumento.nombre; string correoUsuarioElaboro = DataManager.GetUsuario(solicitud.IdUsuario).Correo; ServiceEmail SO_Email = new ServiceEmail(); string[] correos = new string[2]; correos[0] = correoUsuarioElaboro; correos[1] = "*****@*****.**"; string body; body = "<HTML>"; body += "<head>"; body += "<meta http-equiv=\"Content - Type\" content=\"text / html; charset = utf - 8\"/>"; body += "</head>"; body += "<body text=\"white\">"; body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">" + definirSaludo() + "</font> </p>"; body += "<ul>"; body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Para notificar que la JES con el número <b> " + objDocumento.nombre + "</b> versión <b> " + version.no_version + ".0" + " </b> fué etiquetada con la clasificación de seguridad: <b>" + classificationLevel.ClassificationLevel + " </b></font> </li>"; body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Adicionalmente informo que el documento a partir de este momento pasa a su nombre y queda actualizado en sistema.</font></li>"; body += "<br/>"; body += "</ul>"; body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">Cualquier duda quedo a sus órdenes</font> </p>"; body += "<br/>"; body += "<br/>"; body += "<p><font font=\"default Sans Serif\" size=\"3\" color=\"black\">Saludos / Kind regards</font> </p>"; body += "</body>"; body += "</HTML>"; //Ejecutamos el método para notificar por correo bool respuestaCorreo = SO_Email.SendEmailLotusCustom(correos, title, body, "CONTROL_DOCUMENTOS_ETIQUETADO", 0); if (respuestaCorreo) { Console.WriteLine("El correo se envió perron!!"); } else { Console.WriteLine("Hubo un error al enviar el correo"); } //bool respuesta = SO_Email.SendEmailOutlook(correos, title, body, new List<string>()); Console.WriteLine("Se etiqueto la versión " + solicitud.IdVersion); } else { //TODO: No se pudo etiquetar tu documento. Console.WriteLine("No se pudo etiquetar el documento " + solicitud.IdVersion); DataManagerControlDocumentos.UpdateSolicitudEtiquetar(solicitud.IdSolicitud, 1); string correoUsuarioElaboro = DataManager.GetUsuario(solicitud.IdUsuario).Correo; Documento objDocumento = DataManagerControlDocumentos.GetDocumento(solicitud.IdVersion); Version version = DataManagerControlDocumentos.GetVersion(solicitud.IdVersion); ServiceEmail SO_Email = new ServiceEmail(); string[] correos = new string[2]; correos[0] = correoUsuarioElaboro; correos[1] = "*****@*****.**"; string body; body = "<HTML>"; body += "<head>"; body += "<meta http-equiv=\"Content - Type\" content=\"text / html; charset = utf - 8\"/>"; body += "</head>"; body += "<body text=\"white\">"; body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">" + definirSaludo() + "</font> </p>"; body += "<ul>"; body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Para notificar que la JES con el número <b> " + objDocumento.nombre + "</b> versión <b> " + version.no_version + ".0" + " </b> <b>NO</b> fué etiquetada con la clasificación de seguridad: <b>" + classificationLevel.ClassificationLevel + " </b></font> </li>"; body += "<li><font font=\"verdana\" size=\"3\" color=\"black\">Para mas información favor de contactar al administrador de Control de documentos</font></li>"; body += "<br/>"; body += "</ul>"; body += "<p><font font=\"verdana\" size=\"3\" color=\"black\">Cualquier duda quedo a sus órdenes</font> </p>"; body += "<br/>"; body += "<br/>"; body += "<p><font font=\"default Sans Serif\" size=\"3\" color=\"black\">Saludos / Kind regards</font> </p>"; body += "</body>"; body += "</HTML>"; String title = "Control de documentos - Solicitud no dispobible : " + objDocumento.nombre; bool respuestaCorreo = SO_Email.SendEmailLotusCustom(correos, title, body, "CONTROL_DOCUMENTOS_ETIQUETADO", 0); if (respuestaCorreo) { Console.WriteLine("El correo se envió perron!!"); } else { Console.WriteLine("Hubo un error al enviar el correo"); } } } } }
public static DO_Respuesta setCLJES(byte[] bytes, BaseFont baseFont, string classification, int noCopias) { int angle = 0; int x = 0; int y = 0; DO_Respuesta respuesta = new DO_Respuesta(); using (var ms = new MemoryStream(10 * 1024)) { using (var reader = new PdfReader(bytes)) using (var stamper = new PdfStamper(reader, ms)) { var pages = reader.NumberOfPages; for (int i = 1; i <= pages; i++) { var dc = stamper.GetOverContent(i); Rectangle realPageSize = reader.GetPageSizeWithRotation(i); Rectangle pagesize = reader.GetPageSize(i); float with = pagesize.Width / 72; float height = pagesize.Height / 72; BaseColor baseColor = new BaseColor(30, 42, 99); DateTime fecha_sello = DataManagerControlDocumentos.Get_DateTime(); string dia = fecha_sello.Day.ToString().Length == 1 ? "0" + fecha_sello.Day : fecha_sello.Day.ToString(); string anio = fecha_sello.Year.ToString(); string mes = fecha_sello.Month.ToString().Length == 1 ? "0" + fecha_sello.Month : fecha_sello.Month.ToString(); string fecha = dia + "/" + mes + "/" + anio; string waterMarkText = "MAHLE CONTROL DE DOCUMENTOS / DOCUMENTO LIBERADO ELECTRÓNICAMENTE Y TIENE VALIDEZ SIN FIRMA." + " DISPOSICIÓN: " + fecha; string waterMarkText2 = "ÚNICAMENTE TIENE VALIDEZ EL DOCUMENTO DISPONIBLE EN INTRANET."; string waterMarkText3 = "LAS COPIAS NO ESTÁN SUJETAS A NINGÚN SERVICIO DE ACTUALIZACIÓN."; string waterMarkText4 = "DOCUMENTO SELLADO DEPUÉS DE SU LIBERACIÓN A SOLICITUD DEL DUEÑO DEL DOCUMENTO. "; //Se verifica que la medida sea carta. if (with == 17 && height == 11) { x = Convert.ToInt32(realPageSize.Right - 130); y = Convert.ToInt32(realPageSize.Bottom + 20); AddWaterMarkText2(dc, classification, baseFont, 12, angle, baseColor, x, y); if (noCopias > 0) { AddWaterMarkText2(dc, waterMarkText, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 6), Convert.ToInt32(realPageSize.Bottom + 245)); AddWaterMarkText2(dc, waterMarkText2, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 12), Convert.ToInt32(realPageSize.Bottom + 160)); AddWaterMarkText2(dc, waterMarkText3, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 18), Convert.ToInt32(realPageSize.Bottom + 160)); AddWaterMarkText2(dc, waterMarkText4, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 24), Convert.ToInt32(realPageSize.Bottom + 160)); } stamper.Close(); respuesta.Archivo = ms.ToArray(); respuesta.idRespuesta = 1; return(respuesta); } else if (with == 11 && height == 8.5) { x = Convert.ToInt32(realPageSize.Right - 130); y = Convert.ToInt32(realPageSize.Bottom + 20); AddWaterMarkText2(dc, classification, baseFont, 12, angle, baseColor, x, y); if (noCopias > 0) { AddWaterMarkText2(dc, waterMarkText, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 6), Convert.ToInt32(realPageSize.Bottom + 245)); AddWaterMarkText2(dc, waterMarkText2, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 12), Convert.ToInt32(realPageSize.Bottom + 160)); AddWaterMarkText2(dc, waterMarkText3, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 18), Convert.ToInt32(realPageSize.Bottom + 160)); AddWaterMarkText2(dc, waterMarkText4, baseFont, 6, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 24), Convert.ToInt32(realPageSize.Bottom + 160)); } stamper.Close(); respuesta.Archivo = ms.ToArray(); respuesta.idRespuesta = 1; return(respuesta); } else if (with == 55 && height == 42.5) { x = Convert.ToInt32(realPageSize.Right - 250); y = Convert.ToInt32(realPageSize.Bottom + 90); AddWaterMarkText2(dc, classification, baseFont, 30, angle, baseColor, x, y); if (noCopias > 0) { AddWaterMarkText2(dc, waterMarkText, baseFont, 30, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 30), Convert.ToInt32(realPageSize.Bottom + 1200)); AddWaterMarkText2(dc, waterMarkText2, baseFont, 30, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 60), Convert.ToInt32(realPageSize.Bottom + 750)); AddWaterMarkText2(dc, waterMarkText3, baseFont, 30, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 90), Convert.ToInt32(realPageSize.Bottom + 750)); AddWaterMarkText2(dc, waterMarkText4, baseFont, 30, 90, BaseColor.BLACK, Convert.ToInt32(realPageSize.Left + 120), Convert.ToInt32(realPageSize.Bottom + 750)); } stamper.Close(); respuesta.Archivo = ms.ToArray(); respuesta.idRespuesta = 1; return(respuesta); } else { stamper.Close(); respuesta.Archivo = bytes; respuesta.idRespuesta = 0; return(respuesta); } } } } respuesta.Archivo = bytes; respuesta.idRespuesta = 0; return(respuesta); }