BoletoNet/boletonet

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

jeumichelin opened this issue · 7 comments

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 BoletoNet/BoletoNetCore#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!

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

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?

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

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;
        }

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

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

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