Exemplo n.º 1
0
        /// <summary>
        /// Gera as tres imagens necessárias para o Boleto
        /// </summary>
        /// <param name="lrImagemLogo">O Logo do Banco</param>
        /// <param name="lrImagemBarra">A Barra Horizontal</param>
        /// <param name="lrImagemCodigoBarra">O Código de Barras</param>
        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");

            lrImagemLogo = new LinkedResource(stream, MediaTypeNames.Image.Jpeg)
            {
                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
            };

            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
            };
        }
Exemplo n.º 2
0
        /// <summary>
        /// Monta o Html do boleto bancário
        /// </summary>
        /// <param name="fileName">Caminho do arquivo</param>
        /// <param name="fileName">Caminho do logo do cedente</param>
        /// <returns>Html do boleto gerado</returns>
        public string MontaHtml(string fileName, string logoCedente)
        {
            if (fileName == null)
            {
                fileName = Path.GetTempPath();
            }

            if (logoCedente != null)
            {
                _vLocalLogoCedente = logoCedente;
            }

            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 streamBarra = Assembly.GetExecutingAssembly().GetManifestResourceStream("BoletoNetCore.Imagens.barra.gif");
                using (Stream file = File.Create(fnBarra))
                {
                    CopiarStream(streamBarra, file);
                }

                /*Trecho de código abaixo não funciona em .NET Core devido a incompatibilidades de conversão/serialização.
                 * Vide: https://github.com/dotnet/coreclr/blob/0fbd855e38bc3ec269479b5f6bf561dcfd67cbb6/src/System.Private.CoreLib/src/System/Resources/ResourceReader.cs
                 */
                //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());
        }
Exemplo n.º 3
0
        /// <summary>
        /// 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.
        /// </summary>
        /// <param name="fileName">Path do arquivo que deve conter o código html.</param>
        //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();
        //    }
        //}

        /// <summary>
        /// Monta o Html do boleto bancário
        /// </summary>
        /// <returns>string</returns>
        //public string MontaHtml()
        //{
        //    return MontaHtml(null, null);
        //}


        /// <summary>
        /// Monta o Html do boleto bancário
        /// </summary>
        /// <param name="fileName">Caminho do arquivo</param>
        /// <param name="fileName">Caminho do logo do beneficiario</param>
        /// <returns>Html do boleto gerado</returns>
        //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();
        //}

        /// <summary>
        /// Monta o Html do boleto bancário para View ASP.Net MVC
        /// <code>
        /// <para>Exemplo:</para>
        /// <para>public ActionResult VisualizarBoleto(string Id)</para>
        /// <para>{</para>
        /// <para>    BoletoBancario bb = new BoletoBancario();</para>
        /// <para>    //...</para>
        /// <para>    ViewBag.Boleto = bb.MontaHtml("/Content/Boletos/", "teste1");</para>
        /// <para>    return View();</para>
        /// <para>}</para>
        /// <para>//Na view</para>
        /// <para>@{Layout = null;}@Html.Raw(ViewBag.Boleto)</para>
        /// </code>
        /// </summary>
        /// <param name="Url">Pasta dos boletos. Exemplo MontaHtml("/Content/Boletos/", "000100")</param>
        /// <param name="fileName">Nome do arquivo para o boleto</param>
        /// <returns>Html do boleto gerado</returns>
        /// <desenvolvedor>Sandro Ribeiro</desenvolvedor>
        /// <criacao>16/11/2012</criacao>
        //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();
        //}

        /// <summary>
        /// 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
        /// </summary>
        /// <param name="convertLinhaDigitavelToImage">Converte a Linha Digitável para imagem, com o objetivo de evitar malwares.</param>
        /// <param name="urlImagemLogoBeneficiario">Url/Imagem Base64 da Logo do Beneficiário</param>
        /// <returns>Html do boleto gerado</returns>
        /// <desenvolvedor>Iuri André Stona, Olavo Rocha Neto</desenvolvedor>
        /// <criacao>23/01/2014</criacao>
        /// <alteracao>07/07/2019</alteracao>
        public string MontaHtmlEmbedded(bool convertLinhaDigitavelToImage = false, bool usaCsspdf = false, string urlImagemLogoBeneficiario = null)
        {
            //OnLoad(EventArgs.Empty);

            var assembly = Assembly.GetExecutingAssembly();

            var streamLogo = assembly.GetManifestResourceStream("BoletoNetCore.Imagens." + Boleto.Banco.Codigo.ToString("000") + ".jpg");
            var base64Logo = Convert.ToBase64String(new BinaryReader(streamLogo).ReadBytes((int)streamLogo.Length));
            var fnLogo     = string.Format("data:image/jpg;base64,{0}", 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 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);

            if (convertLinhaDigitavelToImage)
            {
                var linhaDigitavel = Boleto.CodigoBarra.LinhaDigitavel.Replace("  ", " ").Trim();

                var imagemLinha = Utils.DrawText(linhaDigitavel, new Font("Arial", 30, FontStyle.Bold), Color.Black, Color.White);
                var base64Linha = Convert.ToBase64String(Utils.ConvertImageToByte(imagemLinha));

                var fnLinha = string.Format("data:image/gif;base64,{0}", base64Linha);

                Boleto.CodigoBarra.LinhaDigitavel = @"<img style=""max-width:420px; margin-bottom: 2px"" src=" + fnLinha + " />";
            }

            if (!string.IsNullOrEmpty(urlImagemLogoBeneficiario))
            {
                _vLocalLogoBeneficiario = urlImagemLogoBeneficiario;
            }

            var s = HtmlOffLine(null, fnLogo, fnBarra, fnCodigoBarras, usaCsspdf).ToString();

            if (convertLinhaDigitavelToImage)
            {
                s = s.Replace(".w500", "");
            }

            return(s);
        }
Exemplo n.º 4
0
        public Image GeraImagemCodigoBarras(Boleto boleto)
        {
            var cb = new BarCode2of5i(boleto.CodigoBarra.CodigoDeBarras, 1, 50, boleto.CodigoBarra.CodigoDeBarras.Length);

            return(cb.ToBitmap());
        }
Exemplo n.º 5
0
        /// <summary>
        /// Monta o Html do boleto bancário para View ASP.Net MVC
        /// <code>
        /// <para>Exemplo:</para>
        /// <para>public ActionResult VisualizarBoleto(string Id)</para>
        /// <para>{</para>
        /// <para>    BoletoBancario bb = new BoletoBancario();</para>
        /// <para>    //...</para>
        /// <para>    ViewBag.Boleto = bb.MontaHtml("/Content/Boletos/", "teste1");</para>
        /// <para>    return View();</para>
        /// <para>}</para>
        /// <para>//Na view</para>
        /// <para>@{Layout = null;}@Html.Raw(ViewBag.Boleto)</para>
        /// </code>
        /// </summary>
        /// <param name="Url">Pasta dos boletos. Exemplo MontaHtml("/Content/Boletos/", "000100")</param>
        /// <param name="fileName">Nome do arquivo para o boleto</param>
        /// <returns>Html do boleto gerado</returns>
        /// <desenvolvedor>Sandro Ribeiro</desenvolvedor>
        /// <criacao>16/11/2012</criacao>
        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();
                }
            }

            //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))
            {
                using (var ms = new MemoryStream())
                {
                    Html.barra.Save(ms, ImageFormat.Bmp);
                    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());
        }