public static CartaOfertaPdfViewModel ConvertToCartaOfertaPdfIndexViewModel(this Candidatura candidatura, string nombreEntregaCarta, string cargoEntregaCarta, string telefono, string mailTo, string atencionTelefonica, string ayudaComedor, string fax) { var cartaOfertaViewModel = new CartaOfertaPdfViewModel() { CandidaturaId = candidatura.CandidaturaId, Centro = candidatura.Usuario.Centro != null ? candidatura.Usuario.Centro.Nombre : string.Empty, CartaOfertaId = candidatura.CartaOfertas.SingleOrDefault(x => x.CandidaturaId == candidatura.CandidaturaId) != null? candidatura.CartaOfertas.SingleOrDefault(x => x.CandidaturaId == candidatura.CandidaturaId).CartaOfertaId : 0, //fecha = candidatura.CartaOfertas.SingleOrDefault(x => x.CandidaturaId == candidatura.CandidaturaId).FechaCartaOferta.ToLongDateString(), fecha = "", //la fecha en que se agendo la carta oferta NombreCandidato = string.Concat(candidatura.Candidato.Nombre != null ? candidatura.Candidato.Nombre.TrimEnd() : string.Empty, " ", candidatura.Candidato.Apellidos != null ? candidatura.Candidato.Apellidos.TrimEnd() : string.Empty), Categoria = GetNombreCategoriaCOByCategoria(candidatura.Categoria.Nombre), SalarioBruto = (ayudaComedor != "" && candidatura.SalarioPropuesto.HasValue) ? String.Format("{0:0,0.00}", Convert.ToDouble(candidatura.SalarioPropuesto.Value) + Convert.ToDouble(ayudaComedor)) : String.Format("{0:0,0.00}", 0), NombreEntregaCarta = nombreEntregaCarta, CargoEntregaCarta = cargoEntregaCarta, Telefono = telefono, MailTo = mailTo, Atencion = atencionTelefonica, AyudaComedor = ayudaComedor, SalarioNeto = String.Format("{0:0,0.00}", candidatura.SalarioPropuesto.Value), Fax = fax }; cartaOfertaViewModel.fecha = cartaOfertaViewModel.fecha.Substring(cartaOfertaViewModel.fecha.IndexOf(",") + 1); cartaOfertaViewModel.LogoCabecera = string.Concat(HttpContext.Current.Server.MapPath(RutaImagenes), "cabecera.png"); cartaOfertaViewModel.imagenFirma = string.Concat(HttpContext.Current.Server.MapPath(RutaImagenes), "firma.png"); return(cartaOfertaViewModel); }
public static byte[] GenerarCartaOfertaForCartaOfertaPdfViewModel(string TituloDocumento, string NombreCreador, CartaOfertaPdfViewModel CartaOfertaPdfViewModel, string textoCartaOfertaPDF) { //Creamos el documento con el tamaño de página tradicional Document doc = new Document(PageSize.A4, 0, 0, 0, 0); // Indicar donde vamos a guardar el documento var buffer = new MemoryStream(); if (textoCartaOfertaPDF != "") { PdfWriter writer = PdfWriter.GetInstance(doc, buffer); // Le colocamos el título y el autor doc.AddTitle(TituloDocumento); doc.AddCreator(NombreCreador); // Abrimos el archivo doc.Open(); //obtemenos el texto del documento del recurso string[] parrafosCartaOferta = textoCartaOfertaPDF.Split('|'); string parrafoTexto = string.Empty; string parrafoParametros = string.Empty; string[] nombresParametros = null; List <string> datos = new List <string>(); string valor = string.Empty; var documentoPDF = new StringBuilder(); foreach (string parrafo in parrafosCartaOferta) { if (parrafo != string.Empty) { var inicio = 0; //sustituimos los parametros if (parrafo.IndexOf('~') > inicio) { parrafoTexto = parrafo.Substring(inicio, parrafo.IndexOf('~')); parrafoParametros = parrafo.Substring(parrafo.IndexOf('~') + 1); } else { parrafoTexto = parrafo; parrafoParametros = string.Empty; } if (parrafoParametros != string.Empty) { nombresParametros = parrafoParametros.Split('~'); foreach (string nombreParametro in nombresParametros) { var propiedad = CartaOfertaPdfViewModel.GetType().GetProperty(nombreParametro); if (propiedad != null) { valor = propiedad.GetValue(CartaOfertaPdfViewModel) != null?propiedad.GetValue(CartaOfertaPdfViewModel).ToString() : ""; } else { valor = "Valor del parametro no encontrado en el modelo"; } datos.Add(valor); } } parrafoTexto = string.Format(parrafoTexto, datos.ToArray()); documentoPDF.AppendLine(parrafoTexto); datos.Clear(); } } using (var srHtml = new StringReader(documentoPDF.ToString())) { //Interpretar el HTML //iTextSharp.text.xml. //descomentar iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml); } doc.Close(); } return(buffer.ToArray()); }