diff --git a/BoletoNetCore.QuestPdf/logos/085.bmp b/BoletoNetCore.QuestPdf/logos/085.bmp index 2db06485..ad6341b3 100644 Binary files a/BoletoNetCore.QuestPdf/logos/085.bmp and b/BoletoNetCore.QuestPdf/logos/085.bmp differ diff --git a/BoletoNetCore/BoletoImpressao/BoletoBancario.cs b/BoletoNetCore/BoletoImpressao/BoletoBancario.cs index d8808df8..829f6621 100644 --- a/BoletoNetCore/BoletoImpressao/BoletoBancario.cs +++ b/BoletoNetCore/BoletoImpressao/BoletoBancario.cs @@ -16,13 +16,15 @@ namespace BoletoNetCore [Serializable()] public class BoletoBancario { - String _vLocalLogoBeneficiario = String.Empty; - #region Variaveis - private string _instrucoesHtml = string.Empty; - private bool _mostrarCodigoCarteira = false; - private bool _formatoCarne = false; + string _vLocalLogoBeneficiario = string.Empty; + + private readonly CultureInfo _culture = CultureInfo.GetCultureInfo("pt-BR"); + + private bool _formatoCarne; + private bool _mostrarCodigoCarteira; + #endregion Variaveis #region Propriedades @@ -32,8 +34,8 @@ public class BoletoBancario /// public bool MostrarCodigoCarteira { - get { return _mostrarCodigoCarteira; } - set { _mostrarCodigoCarteira = value; } + get => _mostrarCodigoCarteira; + set => _mostrarCodigoCarteira = value; } public bool ExibirDemonstrativo { get; set; } @@ -43,8 +45,8 @@ public bool MostrarCodigoCarteira /// public bool FormatoCarne { - get { return _formatoCarne; } - set { _formatoCarne = value; } + get => _formatoCarne; + set => _formatoCarne = value; } public Boleto Boleto { get; set; } @@ -52,6 +54,7 @@ public bool FormatoCarne public IBanco Banco { get; set; } #region Propriedades + public bool MostrarComprovanteEntregaLivre { get; set; } public bool MostrarComprovanteEntrega { get; set; } @@ -63,17 +66,17 @@ public bool FormatoCarne public bool OcultarReciboPagador { get; set; } public bool GerarArquivoRemessa { get; set; } + /// /// Mostra o termo "Contra Apresentação" na data de vencimento do boleto /// public bool MostrarContraApresentacaoNaDataVencimento { get; set; } public bool MostrarEnderecoBeneficiario { get; set; } - #endregion Propriedades #endregion Propriedades - + #endregion Propriedades #region Override @@ -100,18 +103,10 @@ private string GetCodBarraCode(string code) return Convert.ToBase64String(new BarCode2of5i(code, 1, 50, code.Length).ToByte()); } - protected string Render() - { - var urlImagemLogo = "data:image/jpg;base64," + GetResourceImage("BoletoNetCore.Imagens." + Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3) + ".jpg"); - var urlImagemBarra = "data:image/jpg;base64," + GetResourceImage("BoletoNetCore.Imagens.barra.gif"); - - //Atribui os valores ao html do boleto bancário - return MontaHtml(urlImagemLogo, urlImagemBarra, "\"Código"); - } - #endregion Override #region Html + public string GeraHtmlInstrucoes() { try @@ -137,13 +132,19 @@ public string GeraHtmlInstrucoes() private string GeraHtmlPix(string pixStr, int tamanhoImagem = 200) { - var html = new StringBuilder(); - - html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.Pix.html")); - - return html.ToString() + var html = GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.Pix.html") .Replace("@PIXSTRING", pixStr) .Replace("@PIXIMAGEMTAMANHO", tamanhoImagem.ToString()); + + return html; + } + + private string GeraHtmlPixInstrucoes(string pixStr) + { + var html = GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.PixInstrucoes.html") + .Replace("@PIXINSTRUCOESSTRING", pixStr); + + return html; } private string GeraHtmlCarne(string telefone, string htmlBoleto) @@ -170,6 +171,7 @@ public string GeraHtmlReciboPagador() { html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ReciboPagadorParte10.html")); } + html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ReciboPagadorParte4.html")); html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ReciboPagadorParte5.html")); html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ReciboPagadorParte6.html")); @@ -221,14 +223,16 @@ public string HtmlComprovanteEntrega html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ComprovanteEntrega5.html")); html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ComprovanteEntrega6.html")); - html.Append(MostrarComprovanteEntregaLivre ? GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ComprovanteEntrega71.html") : GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ComprovanteEntrega7.html")); + html.Append(MostrarComprovanteEntregaLivre + ? GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ComprovanteEntrega71.html") + : GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ComprovanteEntrega7.html")); html.Append("
"); return html.ToString(); } } - private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string imagemCodigoBarras, string pixStr = null, int pixTamanhoImagem = 200) + private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string imagemCodigoBarras, string pixStr = null, int pixTamanhoImagem = 200, bool pixInstrucoes = false) { var html = new StringBuilder(); var enderecoBeneficiario = ""; @@ -247,7 +251,6 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima { html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ReciboBeneficiarioRelatorioValores.html")); html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.ReciboBeneficiarioParte5.html")); - html.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.CabecalhoTabelaDemonstrativo.html")); var grupoDemonstrativo = new StringBuilder(); @@ -273,13 +276,11 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima grupoDemonstrativo = grupoDemonstrativo.Replace("@DESCRICAOITEM", item.Descricao); grupoDemonstrativo = grupoDemonstrativo.Replace("@REFERENCIAITEM", item.Referencia); - grupoDemonstrativo = grupoDemonstrativo.Replace("@VALORITEM", item.Valor.ToString("C", CultureInfo.GetCultureInfo("pt-BR"))); + grupoDemonstrativo = grupoDemonstrativo.Replace("@VALORITEM", item.Valor.ToString("C", _culture)); } grupoDemonstrativo.Append(GetResourceHypertext("BoletoNetCore.BoletoImpressao.Parts.TotalDemonstrativo.html")); - grupoDemonstrativo = grupoDemonstrativo.Replace( - "@VALORTOTALGRUPO", - relatorio.Itens.Sum(c => c.Valor).ToString("C", CultureInfo.GetCultureInfo("pt-BR"))); + grupoDemonstrativo = grupoDemonstrativo.Replace("@VALORTOTALGRUPO", relatorio.Itens.Sum(c => c.Valor).ToString("C", _culture)); } html = html.Replace("@ITENSDEMONSTRATIVO", grupoDemonstrativo.ToString()); @@ -308,14 +309,14 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima throw new ArgumentNullException("Endereço do Beneficiário"); enderecoBeneficiario = string.Format("{0} - {1} - {2}/{3} - CEP: {4}", - Boleto.Banco.Beneficiario.Endereco.FormataLogradouro(0), - Boleto.Banco.Beneficiario.Endereco.Bairro, - Boleto.Banco.Beneficiario.Endereco.Cidade, - Boleto.Banco.Beneficiario.Endereco.UF, - Utils.FormataCEP(Boleto.Banco.Beneficiario.Endereco.CEP)); + Boleto.Banco.Beneficiario.Endereco.FormataLogradouro(0), + Boleto.Banco.Beneficiario.Endereco.Bairro, + Boleto.Banco.Beneficiario.Endereco.Cidade, + Boleto.Banco.Beneficiario.Endereco.UF, + Utils.FormataCEP(Boleto.Banco.Beneficiario.Endereco.CEP)); enderecoBeneficiarioCompacto = string.Format("{0} - CEP: {1}", - Boleto.Banco.Beneficiario.Endereco.FormataLogradouro(25), - Utils.FormataCEP(Boleto.Banco.Beneficiario.Endereco.CEP)); + Boleto.Banco.Beneficiario.Endereco.FormataLogradouro(25), + Utils.FormataCEP(Boleto.Banco.Beneficiario.Endereco.CEP)); } } } @@ -331,15 +332,16 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima pagador += string.Format(" - CNPJ: " + Utils.FormataCNPJ(Boleto.Pagador.CPFCNPJ)); break; } + if (Boleto.Pagador.Observacoes != string.Empty) pagador += " - " + Boleto.Pagador.Observacoes; var enderecoPagador = string.Empty; if (!OcultarEnderecoPagador) { - enderecoPagador = Boleto.Pagador.Endereco.FormataLogradouro(0) + "
" + string.Format("{0} - {1}/{2}", Boleto.Pagador.Endereco.Bairro, Boleto.Pagador.Endereco.Cidade, Boleto.Pagador.Endereco.UF); + enderecoPagador = Boleto.Pagador.Endereco.FormataLogradouro(0) + "
" + $"{Boleto.Pagador.Endereco.Bairro} - {Boleto.Pagador.Endereco.Cidade}/{Boleto.Pagador.Endereco.UF}"; if (Boleto.Pagador.Endereco.CEP != String.Empty) - enderecoPagador += string.Format(" - CEP: {0}", Utils.FormataCEP(Boleto.Pagador.Endereco.CEP)); + enderecoPagador += $" - CEP: {Utils.FormataCEP(Boleto.Pagador.Endereco.CEP)}"; } // Dados do Avalista @@ -356,6 +358,7 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima avalista += string.Format(" - CNPJ: " + Utils.FormataCNPJ(Boleto.Avalista.CPFCNPJ)); break; } + if (Boleto.Avalista.Observacoes != string.Empty) avalista += " - " + Boleto.Avalista.Observacoes; } @@ -373,12 +376,15 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima if (MostrarContraApresentacaoNaDataVencimento) dataVencimento = "Contra Apresentação"; - if (String.IsNullOrWhiteSpace(_vLocalLogoBeneficiario)) + if (string.IsNullOrWhiteSpace(_vLocalLogoBeneficiario)) _vLocalLogoBeneficiario = urlImagemLogo; + html.Replace("@PIXINSTRUCOES", + pixInstrucoes && !string.IsNullOrWhiteSpace(pixStr) ? GeraHtmlPixInstrucoes(pixStr) : string.Empty); + return html .Replace("@CODIGOBANCO", Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3)) - .Replace("@DIGITOBANCO", Boleto.Banco.Digito.ToString()) + .Replace("@DIGITOBANCO", Boleto.Banco.Digito) .Replace("@URLIMAGEMLOGO", urlImagemLogo) .Replace("@URLIMGBENEFICIARIO", _vLocalLogoBeneficiario) .Replace("@URLIMAGEMBARRA", urlImagemBarra) @@ -387,8 +393,8 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima .Replace("@MENSAGEMFIXATOPOBOLETO", Boleto.Banco.Beneficiario.ContaBancaria.MensagemFixaTopoBoleto) .Replace("@MENSAGEMFIXAPAGADOR", Boleto.Banco.Beneficiario.ContaBancaria.MensagemFixaPagador) .Replace("@DATAVENCIMENTO", dataVencimento) - .Replace("@BENEFICIARIO_BOLETO", !Boleto.Banco.Beneficiario.MostrarCNPJnoBoleto ? Boleto.Banco.Beneficiario.Nome : string.Format("{0} - {1}", Boleto.Banco.Beneficiario.Nome, Utils.FormataCNPJ(Boleto.Banco.Beneficiario.CPFCNPJ))) - .Replace("@BENEFICIARIO", !Boleto.Banco.Beneficiario.MostrarCNPJnoBoleto ? Boleto.Banco.Beneficiario.Nome : string.Format("{0} - {1}", Boleto.Banco.Beneficiario.Nome, Utils.FormataCNPJ(Boleto.Banco.Beneficiario.CPFCNPJ))) + .Replace("@BENEFICIARIO_BOLETO", !Boleto.Banco.Beneficiario.MostrarCNPJnoBoleto ? Boleto.Banco.Beneficiario.Nome : $"{Boleto.Banco.Beneficiario.Nome} - {Utils.FormataCNPJ(Boleto.Banco.Beneficiario.CPFCNPJ)}") + .Replace("@BENEFICIARIO", !Boleto.Banco.Beneficiario.MostrarCNPJnoBoleto ? Boleto.Banco.Beneficiario.Nome : $"{Boleto.Banco.Beneficiario.Nome} - {Utils.FormataCNPJ(Boleto.Banco.Beneficiario.CPFCNPJ)}") .Replace("@DATADOCUMENTO", Boleto.DataEmissao.ToString("dd/MM/yyyy")) .Replace("@NUMERODOCUMENTO", Boleto.NumeroDocumento) .Replace("@ESPECIEDOCUMENTO", Boleto.EspecieDocumento.ToString()) @@ -396,14 +402,14 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima .Replace("@NOSSONUMERO", Boleto.NossoNumeroFormatado) .Replace("@CARTEIRA", Boleto.CarteiraImpressaoBoleto) .Replace("@ESPECIE", Boleto.EspecieMoeda) - .Replace("@QUANTIDADE", (Boleto.QuantidadeMoeda == 0 ? "" : Boleto.QuantidadeMoeda.ToString())) + .Replace("@QUANTIDADE", Boleto.QuantidadeMoeda == 0 ? "" : Boleto.QuantidadeMoeda.ToString()) .Replace("@VALORDOCUMENTO", Boleto.ValorMoeda) - .Replace("@=VALORDOCUMENTO", (Boleto.ValorTitulo == 0 ? "" : Boleto.ValorTitulo.ToString("C", CultureInfo.GetCultureInfo("pt-BR")))) - .Replace("@DESCONTOS", (Boleto.ImprimirValoresAuxiliares == false || Boleto.ValorDesconto == 0 ? "" : Boleto.ValorDesconto.ToString("C", CultureInfo.GetCultureInfo("pt-BR")))) - .Replace("@OUTRASDEDUCOES", (Boleto.ImprimirValoresAuxiliares == false || Boleto.ValorAbatimento == 0 ? "" : Boleto.ValorAbatimento.ToString("C", CultureInfo.GetCultureInfo("pt-BR")))) - .Replace("@MORAMULTA", (Boleto.ImprimirValoresAuxiliares == false || Boleto.ValorMulta == 0 ? "" : Boleto.ValorMulta.ToString("C", CultureInfo.GetCultureInfo("pt-BR")))) - .Replace("@OUTROSACRESCIMOS", (Boleto.ImprimirValoresAuxiliares == false || Boleto.ValorOutrasDespesas == 0 ? "" : Boleto.ValorOutrasDespesas.ToString("C", CultureInfo.GetCultureInfo("pt-BR")))) - .Replace("@VALORCOBRADO", (Boleto.ImprimirValoresAuxiliares == false || Boleto.ValorPago == 0 ? "" : Boleto.ValorPago.ToString("C", CultureInfo.GetCultureInfo("pt-BR")))) + .Replace("@=VALORDOCUMENTO", Boleto.ValorTitulo == 0 ? "" : Boleto.ValorTitulo.ToString("C", _culture)) + .Replace("@DESCONTOS", !Boleto.ImprimirValoresAuxiliares || Boleto.ValorDesconto == 0 ? "" : Boleto.ValorDesconto.ToString("C", _culture)) + .Replace("@OUTRASDEDUCOES", !Boleto.ImprimirValoresAuxiliares || Boleto.ValorAbatimento == 0 ? "" : Boleto.ValorAbatimento.ToString("C", _culture)) + .Replace("@MORAMULTA", !Boleto.ImprimirValoresAuxiliares || Boleto.ValorMulta == 0 ? "" : Boleto.ValorMulta.ToString("C", _culture)) + .Replace("@OUTROSACRESCIMOS", !Boleto.ImprimirValoresAuxiliares || Boleto.ValorOutrasDespesas == 0 ? "" : Boleto.ValorOutrasDespesas.ToString("C", _culture)) + .Replace("@VALORCOBRADO", !Boleto.ImprimirValoresAuxiliares || Boleto.ValorPago == 0 ? "" : Boleto.ValorPago.ToString("C", _culture)) .Replace("@AGENCIACONTA", Boleto.Banco.Beneficiario.CodigoFormatado) .Replace("@PAGADOR", pagador) .Replace("@ENDERECOPAGADOR", enderecoPagador) @@ -414,7 +420,7 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima .Replace("@USODOBANCO", Boleto.UsoBanco) .Replace("@IMAGEMCODIGOBARRA", imagemCodigoBarras) .Replace("@ACEITE", Boleto.Aceite).ToString() - .Replace("@ENDERECOBENEFICIARIO_BOLETO", MostrarEnderecoBeneficiario ? string.Format(" - {0}", enderecoBeneficiarioCompacto) : "") + .Replace("@ENDERECOBENEFICIARIO_BOLETO", MostrarEnderecoBeneficiario ? $" - {enderecoBeneficiarioCompacto}" : "") .Replace("@ENDERECOBENEFICIARIO", MostrarEnderecoBeneficiario ? enderecoBeneficiario : "") .Replace("@INSTRUCOES", Boleto.MensagemInstrucoesCaixaFormatado.Replace(Environment.NewLine, "
")) .Replace("@PARCELAS", Boleto.ParcelaInformativo != string.Empty ? ("Parcela: " + Boleto.ParcelaInformativo) : ""); @@ -427,32 +433,34 @@ private string MontaHtml(string urlImagemLogo, string urlImagemBarra, string ima /// /// Função utilizada para gerar o html do boleto sem que o mesmo esteja dentro de uma página Web. /// + /// O texto a ser incluído no início do e-mail. /// Local apontado pela imagem de logo. /// Local apontado pela imagem de barra. /// Local apontado pela imagem do código de barras. + /// Indica se os estilos CSS para renderização em PDF devem ser aplicados. + /// A string de pagamento PIX a ser incluída no HTML, se aplicável. + /// O tamanho da imagem PIX em pixels. + /// Indica se o QrCode de pagamento PIX deve ser incluído nas instruções. /// StringBuilder conténdo o código html do boleto bancário. - protected StringBuilder HtmlOffLine(string textoNoComecoDoEmail, string srcLogo, string srcBarra, string srcCodigoBarra, bool usaCsspdf = false, string pixStr = null, int pixTamanhoImagem = 200) - {//protected StringBuilder HtmlOffLine(string srcCorte, string srcLogo, string srcBarra, string srcPonto, string srcBarraInterna, string srcCodigoBarra) - //OnLoad(EventArgs.Empty); - + protected StringBuilder HtmlOffLine(string textoNoComecoDoEmail, string srcLogo, string srcBarra, string srcCodigoBarra, bool usaCsspdf = false, string pixStr = null, int pixTamanhoImagem = 200, bool pixInstrucoes = false) + { var html = new StringBuilder(); HtmlOfflineHeader(html, usaCsspdf); if (!string.IsNullOrEmpty(textoNoComecoDoEmail)) { html.Append(textoNoComecoDoEmail); } - html.Append(MontaHtml(srcLogo, srcBarra, "\"Código", pixStr, pixTamanhoImagem)); + + html.Append(MontaHtml(srcLogo, srcBarra, srcCodigoBarra, pixStr, pixTamanhoImagem, pixInstrucoes)); HtmlOfflineFooter(html); return html; } - - - /// /// Monta o Header de um email com pelo menos um boleto dentro. /// - /// StringBuilder onde o conteudo sera salvo. + /// StringBuilder usado para construir o conteúdo HTML. + /// Indica se os estilos CSS para renderização em PDF devem ser aplicados. protected static void HtmlOfflineHeader(StringBuilder html, bool usaCsspdf = false) { html.Append("\n"); @@ -463,6 +471,7 @@ protected static void HtmlOfflineHeader(StringBuilder html, bool usaCsspdf = fal html.Append(" Boleto.Net\n"); #region Css + { var arquivoCss = usaCsspdf ? "BoletoNetCore.BoletoImpressao.BoletoNetPDF.css" : "BoletoNetCore.BoletoImpressao.BoletoNet.css"; var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(arquivoCss); @@ -473,16 +482,15 @@ protected static void HtmlOfflineHeader(StringBuilder html, bool usaCsspdf = fal html.Append(sr.ReadToEnd()); html.Append("\n"); sr.Close(); - sr.Dispose(); } } + #endregion Css html.Append(" \n"); html.Append("\n"); } - /// /// Monta o Footer de um email com pelo menos um boleto dentro. /// @@ -493,7 +501,6 @@ protected static void HtmlOfflineFooter(StringBuilder saida) saida.Append("\n"); } - /// /// Junta varios boletos em uma unica AlternateView, para todos serem mandados juntos no mesmo email /// @@ -516,22 +523,22 @@ public static AlternateView GeraHtmlDeVariosBoletosParaEmail(string textoNoComec var linkedResources = new List(); HtmlOfflineHeader(corpoDoEmail); - if (textoNoComecoDoEmail != null && textoNoComecoDoEmail != "") + if (!string.IsNullOrEmpty(textoNoComecoDoEmail)) { corpoDoEmail.Append(textoNoComecoDoEmail); } + foreach (var umBoleto in arrayDeBoletos) { if (umBoleto != null) { - LinkedResource lrImagemLogo; - LinkedResource lrImagemBarra; - LinkedResource lrImagemCodigoBarra; - umBoleto.GeraGraficosParaEmailOffLine(out lrImagemLogo, out lrImagemBarra, out lrImagemCodigoBarra); + umBoleto.GeraGraficosParaEmailOffLine(out LinkedResource lrImagemLogo, + out LinkedResource lrImagemBarra, + out LinkedResource lrImagemCodigoBarra); var theOutput = umBoleto.MontaHtml( - "cid:" + lrImagemLogo.ContentId, - "cid:" + lrImagemBarra.ContentId, - "\"Código"); + $"cid:{lrImagemLogo.ContentId}", + $"cid:{lrImagemBarra.ContentId}", + $"cid:{lrImagemCodigoBarra.ContentId}"); corpoDoEmail.Append(theOutput); @@ -540,9 +547,8 @@ public static AlternateView GeraHtmlDeVariosBoletosParaEmail(string textoNoComec linkedResources.Add(lrImagemCodigoBarra); } } - HtmlOfflineFooter(corpoDoEmail); - + HtmlOfflineFooter(corpoDoEmail); var av = AlternateView.CreateAlternateViewFromString(corpoDoEmail.ToString(), Encoding.Default, "text/html"); foreach (var theResource in linkedResources) @@ -550,12 +556,9 @@ public static AlternateView GeraHtmlDeVariosBoletosParaEmail(string textoNoComec av.LinkedResources.Add(theResource); } - - return av; } - /// /// Função utilizada gerar o AlternateView necessário para enviar um boleto bancário por e-mail. /// @@ -565,7 +568,6 @@ public AlternateView HtmlBoletoParaEnvioEmail() return HtmlBoletoParaEnvioEmail(null); } - /// /// Função utilizada gerar o AlternateView necessário para enviar um boleto bancário por e-mail. /// @@ -573,12 +575,8 @@ public AlternateView HtmlBoletoParaEnvioEmail() /// AlternateView com os dados do boleto. public AlternateView HtmlBoletoParaEnvioEmail(string textoNoComecoDoEmail) { - LinkedResource lrImagemLogo; - LinkedResource lrImagemBarra; - LinkedResource lrImagemCodigoBarra; - - GeraGraficosParaEmailOffLine(out lrImagemLogo, out lrImagemBarra, out lrImagemCodigoBarra); - var html = HtmlOffLine(textoNoComecoDoEmail, "cid:" + lrImagemLogo.ContentId, "cid:" + lrImagemBarra.ContentId, "cid:" + lrImagemCodigoBarra.ContentId); + GeraGraficosParaEmailOffLine(out LinkedResource lrImagemLogo, out LinkedResource lrImagemBarra, out LinkedResource lrImagemCodigoBarra); + var html = HtmlOffLine(textoNoComecoDoEmail, $"cid:{lrImagemLogo.ContentId}", $"cid:{lrImagemBarra.ContentId}", $"cid:{lrImagemCodigoBarra.ContentId}"); var av = AlternateView.CreateAlternateViewFromString(html.ToString(), Encoding.Default, "text/html"); @@ -596,263 +594,71 @@ public AlternateView HtmlBoletoParaEnvioEmail(string textoNoComecoDoEmail) /// O Código de Barras void GeraGraficosParaEmailOffLine(out LinkedResource lrImagemLogo, out LinkedResource lrImagemBarra, out LinkedResource lrImagemCodigoBarra) { - //OnLoad(EventArgs.Empty); - var randomSufix = new Random().Next().ToString(); // para podermos colocar no mesmo email varios boletos diferentes - var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("BoletoNetCore.Imagens." + Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3) + ".jpg"); + var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream($"BoletoNetCore.Imagens.{Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3)}.jpg"); lrImagemLogo = new LinkedResource(stream, MediaTypeNames.Image.Jpeg) { - ContentId = "logo" + randomSufix + ContentId = $"logo{randomSufix}" }; var assembly = Assembly.GetExecutingAssembly(); var ms = assembly.GetManifestResourceStream("BoletoNetCore.Imagens.barra.jpg"); lrImagemBarra = new LinkedResource(ms, MediaTypeNames.Image.Jpeg) { - ContentId = "barra" + randomSufix + ContentId = $"barra{randomSufix}" }; - var cb = new BarCode2of5i(Boleto.CodigoBarra.CodigoDeBarras, 1, 50, Boleto.CodigoBarra.CodigoDeBarras.Length); + var cb = new BarCode2of5i(Boleto.CodigoBarra.CodigoDeBarras, 1, 50, + Boleto.CodigoBarra.CodigoDeBarras.Length); ms = new MemoryStream(Utils.ConvertImageToByte(cb.ToBitmap())); lrImagemCodigoBarra = new LinkedResource(ms, MediaTypeNames.Image.Gif) { - ContentId = "codigobarra" + randomSufix + ContentId = $"codigobarra{randomSufix}" }; - } - - /// - /// Função utilizada para gravar em um arquivo local o conteúdo do boleto. Este arquivo pode ser aberto em um browser sem que o site esteja no ar. - /// - /// Path do arquivo que deve conter o código html. - //public void MontaHtmlNoArquivoLocal(string fileName) - //{ - // using (var f = new FileStream(fileName, FileMode.Create)) - // { - // var w = new StreamWriter(f, Encoding.Default); - // w.Write(MontaHtml()); - // w.Close(); - // f.Close(); - // } - //} - - /// - /// Monta o Html do boleto bancário - /// - /// string - //public string MontaHtml() - //{ - // return MontaHtml(null, null); - //} - - - /// - /// Monta o Html do boleto bancário - /// - /// Caminho do arquivo - /// Caminho do logo do beneficiario - /// Html do boleto gerado - //public string MontaHtml(string fileName, string logoBeneficiario) - //{ - // if (fileName == null) - // fileName = Path.GetTempPath(); - - // if (logoBeneficiario != null) - // _vLocalLogoBeneficiario = logoBeneficiario; - - // //OnLoad(EventArgs.Empty); - - // var fnLogo = fileName + @"BoletoNet" + Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3) + ".jpg"; - - // if (!File.Exists(fnLogo)) - // { - // var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("BoletoNetCore.Imagens." + Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3) + ".jpg"); - // using (Stream file = File.Create(fnLogo)) - // { - // CopiarStream(stream, file); - // } - // } - - // var fnBarra = fileName + @"BoletoNetBarra.gif"; - // if (!File.Exists(fnBarra)) - // { - // var imgConverter = new ImageConverter(); - // var imgBuffer = (byte[])imgConverter.ConvertTo(Html.barra, typeof(byte[])); - // var ms = new MemoryStream(imgBuffer); - - // using (Stream stream = File.Create(fnBarra)) - // { - // CopiarStream(ms, stream); - // ms.Flush(); - // ms.Dispose(); - // } - // } - - // var fnCodigoBarras = Path.GetTempFileName(); - // var cb = new BarCode2of5i(Boleto.CodigoBarra.CodigoDeBarras, 1, 50, Boleto.CodigoBarra.CodigoDeBarras.Length); - // cb.ToBitmap().Save(fnCodigoBarras); - - // //return HtmlOffLine(fnCorte, fnLogo, fnBarra, fnPonto, fnBarraInterna, fnCodigoBarras).ToString(); - // return HtmlOffLine(null, fnLogo, fnBarra, fnCodigoBarras).ToString(); - //} - - /// - /// Monta o Html do boleto bancário para View ASP.Net MVC - /// - /// Exemplo: - /// public ActionResult VisualizarBoleto(string Id) - /// { - /// BoletoBancario bb = new BoletoBancario(); - /// //... - /// ViewBag.Boleto = bb.MontaHtml("/Content/Boletos/", "teste1"); - /// return View(); - /// } - /// //Na view - /// @{Layout = null;}@Html.Raw(ViewBag.Boleto) - /// - /// - /// Pasta dos boletos. Exemplo MontaHtml("/Content/Boletos/", "000100") - /// Nome do arquivo para o boleto - /// Html do boleto gerado - /// Sandro Ribeiro - /// 16/11/2012 - //public string MontaHtml(string url, string fileName, bool useMapPathSecure = true) - //{ - // //Variável para o caminho físico do servidor - // var pathServer = ""; - - // //Verifica se o usuário informou uma url válida - // if (url == null) - // { - // //Obriga o usuário a especificar uma url válida - // throw new ArgumentException("Você precisa informar uma pasta padrão."); - // } - // else - // { - // if (useMapPathSecure) - // { - // //Verifica se o usuário usou barras no início e no final da url - // if (url.Substring(url.Length - 1, 1) != "/") - // url = url + "/"; - // if (url.Substring(0, 1) != "/") - // url = url + "/"; - // //Mapeia o caminho físico dos arquivos - // pathServer = MapPathSecure(string.Format("~{0}", url)); - // } - - // //Verifica se o caminho existe - // if (!Directory.Exists(pathServer)) - // throw new ArgumentException("A o caminho físico '{0}' não existe.", pathServer); - // } - // //Verifica o nome do arquivo - // if (fileName == null) - // { - // fileName = DateTime.Now.Ticks.ToString(); - // } - // else - // { - // if (fileName == "") - // fileName = DateTime.Now.Ticks.ToString(); - // } - - // //Mantive o padrão - // //OnLoad(EventArgs.Empty); - - // //Prepara o arquivo da logo para ser salvo - // var fnLogo = pathServer + @"BoletoNet" + Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3) + ".jpg"; - // //Prepara o arquivo da logo para ser usado no html - // var fnLogoUrl = url + @"BoletoNet" + Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3) + ".jpg"; - - // //Salvo a imagem apenas 1 vez com o código do banco - // if (!File.Exists(fnLogo)) - // { - // var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("BoletoNetCore.Imagens." + Utils.FormatCode(Boleto.Banco.Codigo.ToString(), 3) + ".jpg"); - // using (Stream file = File.Create(fnLogo)) - // { - // CopiarStream(stream, file); - // } - // } - - // //Prepara o arquivo da barra para ser salvo - // var fnBarra = pathServer + @"BoletoNetBarra.gif"; - // //Prepara o arquivo da barra para ser usado no html - // var fnBarraUrl = url + @"BoletoNetBarra.gif"; - - // //Salvo a imagem apenas 1 vez - // if (!File.Exists(fnBarra)) - // { - // var imgConverter = new ImageConverter(); - // var imgBuffer = (byte[])imgConverter.ConvertTo(Html.barra, typeof(byte[])); - // var ms = new MemoryStream(imgBuffer); - - // using (Stream stream = File.Create(fnBarra)) - // { - // CopiarStream(ms, stream); - // ms.Flush(); - // ms.Dispose(); - // } - // } - - // //Prepara o arquivo do código de barras para ser salvo - // var fnCodigoBarras = string.Format("{0}{1}_codigoBarras.jpg", pathServer, fileName); - // //Prepara o arquivo do código de barras para ser usado no html - // var fnCodigoBarrasUrl = string.Format("{0}{1}_codigoBarras.jpg", url, fileName); - - // var cb = new BarCode2of5i(Boleto.CodigoBarra.CodigoDeBarras, 1, 50, Boleto.CodigoBarra.CodigoDeBarras.Length); - - // //Salva o arquivo conforme o fileName - // cb.ToBitmap().Save(fnCodigoBarras); - - // //Retorna o Html para ser usado na view - // return HtmlOffLine(null, fnLogoUrl, fnBarraUrl, fnCodigoBarrasUrl).ToString(); - //} - /// /// Monta o Html do boleto bancário com as imagens embutidas no conteúdo, sem necessidade de links externos /// de acordo com o padrão http://en.wikipedia.org/wiki/Data_URI_scheme /// - /// Alterado por Olavo Rocha @ Exodus para utilizar arquivos dentro da própria DLL para .net core 2.2 + /// Alterado por Olavo Rocha @ Exodus para utilizar arquivos dentro da própria DLL para .net core 2.2 /// - /// Converte a Linha Digitável para imagem, com o objetivo de evitar malwares. - /// Url/Imagem Base64 da Logo do Beneficiário - /// Html do boleto gerado - /// Iuri André Stona, Olavo Rocha Neto - /// 23/01/2014 - /// 07/07/2019 - public string MontaHtmlEmbedded(bool convertLinhaDigitavelToImage = false, bool usaCsspdf = false, string urlImagemLogoBeneficiario = null, string pixString = null, int pixTamanhoImagem = 200) + /// Indica se a linha de cobrança deve ser convertida em uma imagem para evitar exploração por malware. + /// Determina se os estilos CSS específicos para renderização em formato PDF devem ser aplicados. + /// Especifica a URL ou a imagem codificada em Base64 do logotipo do beneficiário a ser exibida no comprovante bancário. + /// A string de pagamento PIX a ser incorporada no HTML, se aplicável. + /// O tamanho da imagem do código QR PIX, em pixels. + /// Indica se o QrCode de pagamento PIX deve ser incluído nas instruções. + /// Uma string representando o HTML gerado para o comprovante bancário. + public string MontaHtmlEmbedded(bool convertLinhaDigitavelToImage = false, bool usaCsspdf = false, string urlImagemLogoBeneficiario = null, string pixString = null, int pixTamanhoImagem = 200, bool pixInstrucoes = false) { - //OnLoad(EventArgs.Empty); - var assembly = Assembly.GetExecutingAssembly(); - var imageLogo = "BoletoNetCore.Imagens." + Boleto.Banco.Codigo.ToString("000") + ".jpg"; + var imageLogo = $"BoletoNetCore.Imagens.{Boleto.Banco.Codigo:000}.jpg"; var streamLogo = assembly.GetManifestResourceStream(imageLogo); var base64Logo = Convert.ToBase64String(new BinaryReader(streamLogo).ReadBytes((int)streamLogo.Length)); - var fnLogo = string.Format("data:image/jpg;base64,{0}", base64Logo); + var fnLogo = $"data:image/jpg;base64,{base64Logo}"; var streamBarra = assembly.GetManifestResourceStream("BoletoNetCore.Imagens.barra.jpg"); var base64Barra = Convert.ToBase64String(new BinaryReader(streamBarra).ReadBytes((int)streamBarra.Length)); - var fnBarra = string.Format("data:image/jpg;base64,{0}", base64Barra); + var fnBarra = $"data:image/jpg;base64,{base64Barra}"; var cb = new BarCode2of5i(Boleto.CodigoBarra.CodigoDeBarras, 1, 50, Boleto.CodigoBarra.CodigoDeBarras.Length); var base64CodigoBarras = Convert.ToBase64String(cb.ToByte()); - var fnCodigoBarras = string.Format("data:image/gif;base64,{0}", base64CodigoBarras); + var fnCodigoBarras = $"data:image/gif;base64,{base64CodigoBarras}"; if (convertLinhaDigitavelToImage) { - var linhaDigitavel = Boleto.CodigoBarra.LinhaDigitavel.Replace(" ", " ").Trim(); - var font = SKTypeface.FromFamilyName("Arial", SKFontStyleWeight.Bold, SKFontStyleWidth.Normal, SKFontStyleSlant.Upright); + var font = SKTypeface.FromFamilyName("Arial", SKFontStyleWeight.Bold, SKFontStyleWidth.Normal, + SKFontStyleSlant.Upright); var imagemLinha = Utils.DrawText(linhaDigitavel, 40, font, SKColors.Black, SKColors.White); var base64Linha = Convert.ToBase64String(Utils.ConvertImageToByte(imagemLinha)); - var fnLinha = string.Format("data:image/gif;base64,{0}", base64Linha); - - Boleto.CodigoBarra.LinhaDigitavel = @""; + Boleto.CodigoBarra.LinhaDigitavel = $@""; } if (!string.IsNullOrEmpty(urlImagemLogoBeneficiario)) @@ -860,7 +666,7 @@ public string MontaHtmlEmbedded(bool convertLinhaDigitavelToImage = false, bool _vLocalLogoBeneficiario = urlImagemLogoBeneficiario; } - var s = HtmlOffLine(null, fnLogo, fnBarra, fnCodigoBarras, usaCsspdf, pixString, pixTamanhoImagem).ToString(); + var s = HtmlOffLine(null, fnLogo, fnBarra, fnCodigoBarras, usaCsspdf, pixString, pixTamanhoImagem, pixInstrucoes).ToString(); if (convertLinhaDigitavelToImage) { @@ -870,7 +676,6 @@ public string MontaHtmlEmbedded(bool convertLinhaDigitavelToImage = false, bool return s; } - #endregion Geração do Html OffLine public SKBitmap GeraImagemCodigoBarras(Boleto boleto) @@ -881,7 +686,7 @@ public SKBitmap GeraImagemCodigoBarras(Boleto boleto) private void CopiarStream(Stream entrada, Stream saida) { - var bytesLidos = 0; + int bytesLidos; var imgBuffer = new byte[entrada.Length]; while ((bytesLidos = entrada.Read(imgBuffer, 0, imgBuffer.Length)) > 0) @@ -890,4 +695,4 @@ private void CopiarStream(Stream entrada, Stream saida) } } } -} +} \ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/BoletoNet.css b/BoletoNetCore/BoletoImpressao/BoletoNet.css index 56b66d28..add13cec 100644 --- a/BoletoNetCore/BoletoImpressao/BoletoNet.css +++ b/BoletoNetCore/BoletoImpressao/BoletoNet.css @@ -1,13 +1,13 @@ body { - color: #000000; - background-color: #ffffff; - margin-top: 0; - margin-right: 0; + color: #000000; + background-color: #ffffff; + margin-top: 0; + margin-right: 0; } * { - margin: 0px; - padding: 0px; + margin: 0px; + padding: 0px; } table { @@ -17,7 +17,7 @@ table { } img { - border: 0; + border: 0; } .cp { @@ -26,16 +26,16 @@ img { } .ti { - font: 9px Arial, "Liberation Sans", Helvetica, sans-serif; + font: 9px Arial, "Liberation Sans", Helvetica, sans-serif; } .ld { - font: bold 15px Arial, "Liberation Sans", sans-serif; - color: #000000; + font: bold 15px Arial, "Liberation Sans", sans-serif; + color: #000000; } .w150:empty { - display: none; + display: none; } .ct { @@ -59,32 +59,33 @@ img { } .cut { - width: 665px; - height: 1px; - border-top: dashed 1px #000; + width: 665px; + height: 1px; + border-top: dashed 1px #000; } .Ac { - text-align: center; + text-align: center; } .Ar { - text-align: right; + text-align: right; } .Al { - text-align: left; + text-align: left; } .At { - vertical-align: top; + vertical-align: top; } .Ab { - vertical-align: bottom; + vertical-align: bottom; } .ct td, .cp td { + padding-top: 2px; padding-left: 3px; border-left: solid 1px #000; padding-right: 3px; @@ -102,59 +103,60 @@ img { } .pL0 { - padding-left: 0px; + padding-left: 0px; } .pL6 { - padding-left: 6px; + padding-left: 6px; } .pL10 { - padding-left: 10px; + padding-left: 10px; } .imgLogo { - width: 150px; + width: 150px; } - .imgLogo img { - width: 150px; - height: 40px; - } +.imgLogo img { + width: auto; + height: 40px; + margin-bottom: 1px; +} .barra { - width: 3px; - height: 22px; - vertical-align: bottom; + width: 3px; + height: 22px; + vertical-align: bottom; } - .barra img { - width: 2px; - height: 22px; - } +.barra img { + width: 2px; + height: 22px; +} .rBb td { - border-bottom: solid 1px #000; + border-bottom: solid 1px #000; } .BB { - border-bottom: solid 1px #000; + border-bottom: solid 1px #000; } .BL { - border-left: solid 1px #000; + border-left: solid 1px #000; } .BR { - border-right: solid 1px #000; + border-right: solid 1px #000; } .BT1 { - border-top: dashed 1px #000; + border-top: dashed 1px #000; } .BT2 { - border-top: solid 2px #000; + border-top: solid 2px #000; } .bgcGray { @@ -162,83 +164,87 @@ img { } .h1 { - height: 1px; + height: 1px; } .h13 { - height: 13px; + height: 13px; } .h12 { - height: 12px; + height: 12px; } .h13 td { - vertical-align: top; + vertical-align: top; } .h12 td { - vertical-align: top; + vertical-align: top; +} + +.h25 { + height: 25px; } .w6 { - width: 6px; + width: 6px; } .w7 { - width: 7px; + width: 7px; } .w34 { - width: 34px; + width: 34px; } .w40 { - width: 40px; + width: 40px; } .w45 { - width: 45px; + width: 45px; } .w53 { - width: 53px; + width: 53px; } .w62 { - width: 62px; + width: 62px; } .w65 { - width: 65px; + width: 65px; } .w72 { - width: 72px; + width: 72px; } .w83 { - width: 83px; + width: 83px; } .w88 { - width: 88px; + width: 88px; } .w104 { - width: 104px; + width: 104px; } .w105 { - width: 105px; + width: 105px; } .w106 { - width: 106px; + width: 106px; } .w112 { - width: 112px; + width: 112px; } .w113 { @@ -246,59 +252,63 @@ img { } .w123 { - width: 123px; + width: 123px; } .w126 { - width: 126px; + width: 126px; } .w128 { - width: 128px; + width: 128px; } .w132 { - width: 132px; + width: 132px; } .w134 { - width: 134px; + width: 134px; } .w150 { - width: 150px; + width: 150px; } .w163 { - width: 163px; + width: 163px; } .w164 { - width: 164px; + width: 164px; } .w180 { - width: 180px; + width: 180px; } .w182 { - width: 182px; + width: 182px; } .w186 { - width: 186px; + width: 186px; } .w192 { - width: 192px; + width: 192px; } .w250 { - width: 250px; + width: 250px; +} + +.w286 { + width: 286px; } .w298 { - width: 298px; + width: 298px; } .w409 { @@ -310,85 +320,88 @@ img { } .w472 { - width: 472px; + width: 472px; } .w478 { - width: 478px; + width: 478px; } .w500 { - width: 500px; + width: 500px; } .w544 { - width: 544px; + width: 544px; } .w564 { - width: 564px; + width: 564px; } .w659 { - width: 659px; + width: 659px; } .w666 { - width: 100%; + width: 100%; } .w667 { - width: 667px; + width: 667px; } .w900 { - width: 900px; + width: 900px; } - .BHead td { - border-bottom: solid 2px #000; + border-bottom: solid 2px #000; } .EcdBar { - height: 50px; - vertical-align: bottom; + height: 50px; + vertical-align: bottom; } -.rc6 td { - vertical-align: top; +.rc6 { border-bottom: solid 1px #000; border-left: solid 1px #000; border-right: solid 1px #000; } -.rc6 div { - padding-left: 6px; -} - -.rc6 .t { - font: 9px "Arial Narrow", "Liberation Sans Narrow", sans-serif; - color: #000033; - height: 13px; -} - -.rc6 .c { - font: bold 10px Arial, "Liberation Sans", sans-serif; - color: black; - height: 12px; +.rc6 td { + vertical-align: top; + border-bottom: solid 1px #000; + border-left: solid 1px #000; + border-right: solid 1px #000; + padding-top: 2px; + padding-left: 3px; + padding-right: 3px; } .mt23 { - margin-top: 23px; + margin-top: 23px; } .pb4 { - padding-bottom: 14px; + padding-bottom: 14px; } .ebc { - width: 4px; - height: 440px; - border-right: dotted 1px #000000; - margin-right: 4px; + width: 4px; + height: 440px; + border-right: dotted 1px #000000; + margin-right: 4px; +} + +.diL { + float: left; + width: calc(100% - 135px); } + +.diR { + float: right; + width: 125px; + padding: 5px; +} \ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/BoletoNetPDF.css b/BoletoNetCore/BoletoImpressao/BoletoNetPDF.css index ce8f76a9..126951b5 100644 --- a/BoletoNetCore/BoletoImpressao/BoletoNetPDF.css +++ b/BoletoNetCore/BoletoImpressao/BoletoNetPDF.css @@ -1,13 +1,13 @@ body { - color: #000000; - background-color: #ffffff; - margin-top: 0; - margin-right: 0; + color: #000000; + background-color: #ffffff; + margin-top: 0; + margin-right: 0; } * { - margin: 0px; - padding: 0px; + margin: 0px; + padding: 0px; } table { @@ -17,69 +17,75 @@ table { } img { - border: 0; + border: 0; } .cp { - font: bold 10px Arial, "Liberation Sans", sans-serif; - color: black; + font: bold 10px Arial, "Liberation Sans", sans-serif; + color: #000000; } .ti { - font: 9px Arial, "Liberation Sans", Helvetica, sans-serif; + font: 9px Arial, "Liberation Sans", Helvetica, sans-serif; } .ld { - font: bold 15px Arial, "Liberation Sans", sans-serif; - color: #000000; + font: bold 15px Arial, "Liberation Sans", sans-serif; + color: #000000; } .w150:empty { - display: none; + display: none; } .ct { - font: 9px "Arial Narrow", "Liberation Sans Narrow", sans-serif; - color: #000033; + font: 9px "Arial Narrow", "Liberation Sans Narrow", sans-serif; + color: #000000; } .cn { - font: 9px Arial, "Liberation Sans", sans-serif; - color: black; + font: 9px Arial, "Liberation Sans", sans-serif; + color: #000000; +} + +.cn8 { + font: 8px Arial, "Liberation Sans", sans-serif; + color: #000000; } .bc { - font: bold 22px Arial, "Liberation Sans", sans-serif; - color: #000000; + font: bold 22px Arial, "Liberation Sans", sans-serif; + color: #000000; } .cut { - width: 665px; - height: 1px; - border-top: dashed 1px #000; + width: 665px; + height: 1px; + border-top: dashed 1px #000; } .Ac { - text-align: center; + text-align: center; } .Ar { - text-align: right; + text-align: right; } .Al { - text-align: left; + text-align: left; } .At { - vertical-align: top; + vertical-align: top; } .Ab { - vertical-align: bottom; + vertical-align: bottom; } .ct td, .cp td { + padding-top: 2px; padding-left: 3px; border-left: solid 1px #000; padding-right: 3px; @@ -87,69 +93,70 @@ img { } .cpN { - font: bold 10px Arial, "Liberation Sans", sans-serif; - color: black; + font: bold 10px Arial, "Liberation Sans", sans-serif; + color: #000000; } .ctN { - font: 9px "Arial Narrow", "Liberation Sans Narrow", sans-serif; - color: #000033; + font: 9px "Arial Narrow", "Liberation Sans Narrow", sans-serif; + color: #000000; } .pL0 { - padding-left: 0px; + padding-left: 0px; } .pL6 { - padding-left: 6px; + padding-left: 6px; } .pL10 { - padding-left: 10px; + padding-left: 10px; } .imgLogo { - width: 150px; + width: 150px; } - .imgLogo img { - width: 150px; - height: 40px; - } +.imgLogo img { + width: auto; + height: 40px; + margin-bottom: 1px; +} .barra { - width: 3px; - height: 22px; - vertical-align: bottom; + width: 3px; + height: 22px; + vertical-align: bottom; } - .barra img { - width: 2px; - height: 22px; - } +.barra img { + width: 2px; + height: 22px; +} .rBb td { - border-bottom: solid 1px #000; + border-bottom: solid 1px #000; } .BB { - border-bottom: solid 1px #000; + border-bottom: solid 1px #000; } .BL { - border-left: solid 1px #000; + border-left: solid 1px #000; } .BR { - border-right: solid 1px #000; + border-right: solid 1px #000; } .BT1 { - border-top: dashed 1px #000; + border-top: dashed 1px #000; } .BT2 { - border-top: solid 2px #000; + border-top: solid 2px #000; } .bgcGray { @@ -161,191 +168,200 @@ img { } .h13 { - height: 13px; + height: 13px; } .h12 { - height: 12px; + height: 12px; } .h13 td { - vertical-align: top; + vertical-align: top; } .h12 td { - vertical-align: top; + vertical-align: top; +} + +.h25 { + height: 25px; } .w6 { - width: 6px; + width: 6px; } .w7 { - width: 7px; + width: 7px; } .w34 { - width: 34px; + width: 34px; } .w40 { - width: 40px; + width: 40px; } .w45 { - width: 45px; + width: 45px; } .w53 { - width: 53px; + width: 53px; } .w62 { - width: 62px; + width: 62px; } .w65 { - width: 65px; + width: 65px; } .w72 { - width: 72px; + width: 72px; } .w83 { - width: 83px; + width: 83px; } .w88 { - width: 88px; + width: 88px; } .w104 { - width: 104px; + width: 104px; } .w105 { - width: 105px; + width: 105px; } .w106 { - width: 106px; + width: 106px; } -.w113 { - width: 113px; +.w112 { + width: 112px; } -.w112 { - width: 112px; +.w113 { + width: 113px; } .w123 { - width: 123px; + width: 123px; } .w126 { - width: 126px; + width: 126px; } .w128 { - width: 128px; + width: 128px; } .w132 { - width: 132px; + width: 132px; } .w134 { - width: 134px; + width: 134px; } .w150 { - width: 150px; + width: 150px; } .w163 { - width: 163px; + width: 163px; } .w164 { - width: 164px; + width: 164px; } .w180 { - width: 180px; + width: 180px; } .w182 { - width: 182px; + width: 182px; } .w186 { - width: 186px; + width: 186px; } .w192 { - width: 192px; + width: 192px; } .w250 { - width: 250px; + width: 250px; +} + +.w286 { + width: 286px; } .w298 { - width: 298px; + width: 298px; } .w409 { - width: 409px; + width: 409px; } .w450 { - width: 450px; + width: 450px; } .w472 { - width: 472px; + width: 472px; } .w478 { - width: 478px; + width: 478px; } .w500 { - width: 500px; + width: 500px; } .w544 { - width: 544px; + width: 544px; } .w564 { - width: 564px; + width: 564px; } .w659 { - width: 659px; + width: 659px; } .w666 { - width: 100%; + width: 100%; } .w667 { - width: 667px; + width: 667px; } .w900 { - width: 900px; + width: 900px; } + .BHead td { - border-bottom: solid 2px #000; + border-bottom: solid 2px #000; } .EcdBar { - height: 50px; - vertical-align: bottom; + height: 50px; + vertical-align: bottom; } .rc6 td { @@ -353,35 +369,33 @@ img { border-bottom: solid 1px #000; border-left: solid 1px #000; border-right: solid 1px #000; -} - -.rc6 div { - padding-left: 6px; -} - -.rc6 .t { - font: 9px "Arial Narrow", "Liberation Sans Narrow", sans-serif; - color: #000033; - height: 13px; -} - -.rc6 .c { - font: bold 10px Arial, "Liberation Sans", sans-serif; - color: black; - height: 12px; + padding-top: 2px; + padding-left: 3px; + padding-right: 3px; } .mt23 { - margin-top: 23px; + margin-top: 23px; } .pb4 { - padding-bottom: 14px; + padding-bottom: 14px; } .ebc { - width: 4px; - height: 440px; - border-right: dotted 1px #000000; - margin-right: 4px; + width: 4px; + height: 440px; + border-right: dotted 1px #000000; + margin-right: 4px; +} + +.diL { + float: left; + width: calc(100% - 135px); } + +.diR { + float: right; + width: 125px; + padding: 5px; +} \ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/Pix.html b/BoletoNetCore/BoletoImpressao/Parts/Pix.html index a506e368..de9ab200 100644 --- a/BoletoNetCore/BoletoImpressao/Parts/Pix.html +++ b/BoletoNetCore/BoletoImpressao/Parts/Pix.html @@ -1,8 +1,10 @@ -
-

-

- Pague esse boleto com PIX. É seguro e imediato! +
+
+
+

+ Pague esse boleto com PIX. É seguro e imediato!
-
- +
+
\ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/PixInstrucoes.html b/BoletoNetCore/BoletoImpressao/Parts/PixInstrucoes.html new file mode 100644 index 00000000..959916da --- /dev/null +++ b/BoletoNetCore/BoletoImpressao/Parts/PixInstrucoes.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte11.html b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte11.html index 6be88336..7cfafc5b 100644 --- a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte11.html +++ b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte11.html @@ -1,5 +1,7 @@  - +
@IMAGEMCODIGOBARRA + +
\ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte2.html b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte2.html index 2c3f293c..5d6ffe38 100644 --- a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte2.html +++ b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte2.html @@ -4,7 +4,7 @@ Vencimento - @LOCALPAGAMENTO - @DATAVENCIMENTO + @LOCALPAGAMENTO + @DATAVENCIMENTO \ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte3.html b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte3.html index dc80f494..81b46c4e 100644 --- a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte3.html +++ b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte3.html @@ -4,7 +4,7 @@ Agência / Código Beneficiário - @BENEFICIARIO_BOLETO@ENDERECOBENEFICIARIO_BOLETO - @AGENCIACONTA + @BENEFICIARIO_BOLETO@ENDERECOBENEFICIARIO_BOLETO + @AGENCIACONTA \ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte4.html b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte4.html index 77f603ea..3a43b4be 100644 --- a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte4.html +++ b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte4.html @@ -1,18 +1,18 @@  - - - - + + + + - - - - - - + + + + + +
Data do documentoNo documentoEspécie doc.AceiteData do documentoNo documentoEspécie doc.Aceite Data processamento Carteira / Nosso número
@DATADOCUMENTO@NUMERODOCUMENTO@ESPECIEDOCUMENTO@ACEITE@DATAPROCESSAMENTO@NOSSONUMERO@DATADOCUMENTO@NUMERODOCUMENTO@ESPECIEDOCUMENTO@ACEITE@DATAPROCESSAMENTO@NOSSONUMERO
\ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte5.html b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte5.html index 1123fed8..a8d9182e 100644 --- a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte5.html +++ b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte5.html @@ -1,20 +1,20 @@  - - - - + + + + - - - - - - - + + + + + + +
Uso do bancoC I PCarteiraEspécieQuantidadeC I PCarteiraEspécieQuantidade (x) Valor (=) Valor documento
  @CARTEIRA@ESPECIE@QUANTIDADE@VALORDOCUMENTO@=VALORDOCUMENTO@CARTEIRA@ESPECIE@QUANTIDADE@VALORDOCUMENTO@=VALORDOCUMENTO
\ No newline at end of file diff --git a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte6.html b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte6.html index 99664aa7..d4019fce 100644 --- a/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte6.html +++ b/BoletoNetCore/BoletoImpressao/Parts/ReciboBeneficiarioParte6.html @@ -1,20 +1,43 @@  - - + + - + + + + + + + + + + + + + + +
-
Instruções (Texto de responsabilidade do beneficiário)
-
@INSTRUCOES
+
+
+
Instruções (Texto de responsabilidade do beneficiário)
+
@INSTRUCOES
+
+ @PIXINSTRUCOES
-
(-) Desconto / Abatimentos
-
@DESCONTOS
-
(-) Outras deduções
-
@OUTRASDEDUCOES
-
(+) Mora / Multa
-
@MORAMULTA
-
(+) Outros acréscimos
-
@OUTROSACRESCIMOS
-
(=) Valor cobrado
-
@VALORCOBRADO
+
+
(-) Desconto / Abatimentos
+
@DESCONTOS
+
+
(-) Outras deduções
+
@OUTRASDEDUCOES
+
+
(+) Mora / Multa
+
@MORAMULTA
+
+
(+) Outros acréscimos
+
@OUTROSACRESCIMOS
+
+
(=) Valor cobrado
+
@VALORCOBRADO
\ No newline at end of file diff --git a/BoletoNetCore/Imagens/085.jpg b/BoletoNetCore/Imagens/085.jpg index e64c535f..b5d12ab6 100644 Binary files a/BoletoNetCore/Imagens/085.jpg and b/BoletoNetCore/Imagens/085.jpg differ