private static void EscreverFrente(PdfDocument outputDocument, XPdfForm form, UsuarioCertificadoCertame certificadoUsuario, XFont font, XStringFormat format) { var paginaFrente = outputDocument.AddPage(); paginaFrente.Orientation = PageOrientation.Landscape; paginaFrente.Size = PageSize.A4; form.PageNumber = 1; var manterPosicaoDado = new BMPosicaoDadoCertificadoCertame(); var posicaoNome = manterPosicaoDado.ObterPorDadoAno("nome", certificadoUsuario.CertificadoCertame.Ano); var posicaoCpf1 = manterPosicaoDado.ObterPorDadoAno("cpf1", certificadoUsuario.CertificadoCertame.Ano); var posicaoCpf2 = manterPosicaoDado.ObterPorDadoAno("cpf2", certificadoUsuario.CertificadoCertame.Ano); if (posicaoNome == null || posicaoCpf1 == null || posicaoCpf2 == null) { throw new Exception("Posição de dado obrigatório não informada na frente"); } var gfx = XGraphics.FromPdfPage(paginaFrente); gfx.DrawImage(form, new XRect(0, 0, form.PointWidth, form.PointHeight)); EscreverDado(paginaFrente, posicaoNome, gfx, font, format, certificadoUsuario.Usuario.Nome); EscreverDado(paginaFrente, posicaoCpf1, gfx, font, format, certificadoUsuario.Usuario.CPF.Substring(0, 9).Insert(3, ".").Insert(7, ".")); EscreverDado(paginaFrente, posicaoCpf2, gfx, font, format, certificadoUsuario.Usuario.CPF.Substring(9, 2)); if (certificadoUsuario.CertificadoCertame.Data.HasValue) { var data = certificadoUsuario.CertificadoCertame.Data.Value; var dataFormatada = string.Format("{0} de {1} de {2}", data.Day.ToString().PadLeft(2, '0'), data.ObterNomeMes(), data.Year); var posicaoData = manterPosicaoDado.ObterPorDadoAno("data", certificadoUsuario.CertificadoCertame.Ano); EscreverDado(paginaFrente, posicaoData, gfx, font, format, dataFormatada); } if (!string.IsNullOrWhiteSpace(certificadoUsuario.CertificadoCertame.NomeCertificado)) { var posicaoNomeCertificado = manterPosicaoDado.ObterPorDadoAno("nomecertificado", certificadoUsuario.CertificadoCertame.Ano); // Somente nesse caso, só insere o nome no PDF caso tenha o dado, pois alguns PDFs possuem o // nome neles, mas o campo "Nome" é obrigatório em todos os certificados. if (posicaoNomeCertificado != null) { var fontNomeCertificado = new XFont("Verdana", 13, XFontStyle.Bold); EscreverDado(paginaFrente, posicaoNomeCertificado, gfx, fontNomeCertificado, format, certificadoUsuario.CertificadoCertame.NomeCertificado.ToUpper()); } } }
public PosicaoDadoCertificadoCertame ObterPorDadoAno(string dado, int ano) { return(_bmPosicaoDadoCertificadoCertame.ObterPorDadoAno(dado, ano)); }