ASP .NET MVC 5 - Gerando Código de Barras


  Neste artigo veremos como gerar código de barras dinamicamente em aplicações ASP  .NET MVC 5 usando a API .NET Graphics e BarCode Font.

Para poder gerar código de barras de forma dinâmica em uma aplicação ASP .NET MVC 5 vamos precisar do BarCode Font.

Baixe e instale o pacote BarCode Font neste link : Download Barcode Font

Após fazer o download,  instale no seu computador local as fontes que iremos usar no código de barras

Após isso podemos iniciar o desenvolvimento da aplicação ASP .NET MVC 5.

Recursos usados :

Criando o projeto ASP .NET MVC

Abra o VS 2017 Community e clique em New Project;

A seguir selecione Visual C# -> Web -> ASP .NET Web Application (.NET Framework) e  Informe o nome Mvc_BarCode e clique no botão OK;

A seguir selecione o template MVC e clique no botão OK;

Será criado um projeto contendo toda a estrutura de pastas criadas pelo framework ASP .NET MVC.

Definindo o código do método Index(POST) no Controlador HomeController

Vamos aproveitar o controlador HomeController criado por padrão na pasta Controllers e definir um novo método Action Index para tratar o POST.

Neste método Action o valor do código de barras informado em um TextBox será capturado como um parâmetro, o tamanho do texto será determinado e uma imagem Bitmap será desenhada.

Neste desenho um retângulo branco será desenhado sobre a imagem Bitmap usando um objeto Brush de cor White e o código de barraas será desenhado usando um objeto Brush Black.

A imagem será salva em um MemoryStream e então convertida para uma string Base64 que depois será atribuida a um objeto ViewBag.

        [HttpPost]
        public ActionResult Index(string barcode)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                //A imagem é desenhada baseada no tamanho do texto
                using (Bitmap bitMap = new Bitmap(barcode.Length * 40, 80))
                {
                    //O objeto Graphics é gerado para a imagem
                    using (Graphics graphics = Graphics.FromImage(bitMap))
                    {
                        //Usamos a fonte Barcode
                        Font oFont = new Font("IDAutomationHC39M", 16);
                        PointF point = new PointF(2f, 2f);
                        //Um objeto White Brush é usado para preencher a imagem com a cor branca
                        SolidBrush whiteBrush = new SolidBrush(Color.White);
                        graphics.FillRectangle(whiteBrush, 0, 0, bitMap.Width, bitMap.Height);
                        //Um objeto Black Brush é usado para desenhar o codigo de barras
                        SolidBrush blackBrush = new SolidBrush(Color.Black);
                        graphics.DrawString("*" + barcode + "*", oFont, blackBrush, point);
                    }
                    //O Bitmap é salvo na Memory Stream.
                    bitMap.Save(ms, ImageFormat.Png);
                    //A imagem é convertida para uma string Base64
                    ViewBag.BarcodeImage = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray());
                }
            }
            return View();
        }

Criando a View

Vamos agora ajustar a View Index do controlador HomeController.

Nossa View vai possuir um formulário HTML que será criado usando o método Html.BeginForm com os seguintes parâmetros:

Além disso temos um TextBox HTML e um botão Submit e uma elemento Image.

Quando o botão Submit for clicado, o formulário será submetido e a imagem do código de barras será gerada e exibida no elemento Image usando objeto ViewBag.

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <input type="text" name="barcode" />
        <input type="submit" value="Gerar Código de Barras" />
    }
    <hr />
    @if (ViewBag.BarcodeImage != null)
    {
        <img src="@ViewBag.BarcodeImage" alt="" />
    }
</body>
</html>

Executando o projeto iremos obter o seguinte resultado :

Pegue o projeto completo aqui: Mvc_BarCode.zip (sem as referências)

"(Disse Jesus) - Quem ama a sua vida perdê-la-á, e quem neste mundo odeia a sua vida, guardá-la-á para a vida eterna."
João 12:25

Referências:


José Carlos Macoratti