BoletoNet / boletonet

Boleto.Net is a library developed for use in Brazil, given it has been programmed with Brazilian retail legislation and business rules for bank registered billing integration.
Apache License 2.0
481 stars 383 forks source link

Erro ao Gerar HTML .net6 executando aplicação via docker #958

Closed jeumichelin closed 1 year ago

jeumichelin commented 1 year ago

Olá! Gostaria de saber se alguém poderia me ajudar, estou com o seguinte problema para gerar o HTML do boleto: Tentei adicionar ao meu dockerfile a sugestão da issue https://github.com/BoletoNet/BoletoNetCore/issues/25, mas não tive sucesso.

System.TypeInitializationException: The type initializer for 'Gdip' threw an exception.\n ---> System.PlatformNotSupportedException: System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information.\n at System.Drawing.LibraryResolver.EnsureRegistered()\n at System.Drawing.SafeNativeMethods.Gdip..cctor()\n --- End of inner exception stack trace ---\n at System.Drawing.SafeNativeMethods.Gdip.get_ThreadData()\n at System.Drawing.Brushes.GetBrush(Object key, Color color)\n at BoletoNetCore.BoletoBancario.MontaHtmlEmbedded(Boolean convertLinhaDigitavelToImage, Boolean usaCsspdf, String urlImagemLogoBeneficiario, String pixString)\n ...

Muito obrigado!

carloscds commented 1 year ago

@jeumichelin Para container gere o PDF com este componente: https://www.nuget.org/packages/HtmlToPDFCore

jeumichelin commented 1 year ago

Obrigado pela resposta @carloscds ! O problema que estou tendo é na chamada desse método "boletoBancario.MontaHtmlEmbedded()", portanto ainda não tenho um HTML para converter, compreende?

carloscds commented 1 year ago

@jeumichelin Algum parametro esta tentando usar o System.Drawing.

jeumichelin commented 1 year ago

O método está sendo executado da seguinte forma: Terias alguma sugestão para que esse erro não ocorra?


        private string GerarHtml(BoletoBancario boletoBancario)
        {
            const double TAMANHO_FONTES_TEXTO = 12;
            const double TAMANHO_FONTE_ROTULOS = 10;
            const double TAMANHO_FONTES_INSTRUCAO_IMPRESSAO = 14;
            const double TAMANHO_FONTES_INSTRUCOES = 14;

            var html = new StringBuilder();

            // Trecho com css para ajustar fontes
            html.AppendLine("<style>");
            html.AppendFormat(".cp$1 font-size: {0}px !important; $2", TAMANHO_FONTES_TEXTO);
            html.AppendFormat(".ctN$1 font-size: {0}px !important; $2", TAMANHO_FONTE_ROTULOS);
            html.AppendFormat(".cpN$1 font-size: {0}px !important; $2", TAMANHO_FONTES_TEXTO);
            html.AppendFormat(".ti$1 font-size: {0}px !important; $2", TAMANHO_FONTES_INSTRUCAO_IMPRESSAO);
            html.AppendFormat(".ct$1 font-size: {0}px !important; $2", TAMANHO_FONTE_ROTULOS);
            html.AppendFormat(".t$1 font-size: {0}px !important; $2", TAMANHO_FONTE_ROTULOS);
            html.AppendFormat(".it$1 font-size: {0}px !important; $2", TAMANHO_FONTES_INSTRUCOES);
            html.AppendLine("</style>");

            html.AppendLine("<div style=\"page-break-after: always;\">");
            html.AppendLine(boletoBancario.MontaHtmlEmbedded());
            html.AppendLine("</div>");

            var htmlEditado = html
                .ToString()
                .Replace("$1", "{")
                .Replace("$2", "}");

            return htmlEditado;
        }
carloscds commented 1 year ago

@jeumichelin Agora que me liguei, vc ta usando o BoletoNet ou o BoletoNetCore ?

jeumichelin commented 1 year ago

@carloscds Buenas, estamos usando o BoletoNetCore. Abri a Issue no lugar errado né? :(

carloscds commented 1 year ago

@jeumichelin sim, fecha aqui e abre la por favor.