É possível nos depararmos com a necessidade de implementar código de barra numa aplicação, podendo ser por diversos motivos, por exemplo na criação de boletos, para produtos ou identificadores.

O Zend Framework 2 dispõem de um poderoso componente Zenb\Barcode\Barcode que nos auxilia na execução desta tarefa, de forma simples e rápida. Vale lembrar que existem diversos tipos de códigos de barras e cada um tem sua regra a ser seguida para compor de forma correta o barcode. Sendo assim deve-se levar em consideração o tipo de código de barra que deseja criar em sua aplicação.

Para implementarmos um exemplo prático vou utilizar o skeleton appliation default do Zf2. Vou subentender que você já conhece o processo de clone do skeleton e instalação.

Caso não conheça:

Para utilizar o componente Zend\Barcode\Barcode a extensão GD deve estar habilitado

Primeiro passo vamos limpar a view padrão index, para renderizarmos nosso barcode.

Local arquivo view padrão

Vamos implementar nossa estrutura no arquivo Application\Controller\IndexController.

Local do arquivo do controle

Ao abrir o arquivo IndexController ele estará desta maneira.

Método indexController no controler

Primeiro passo vamos importar o componente para o nosso controller controlle.

Importe do componente Barcode

O componente Zend\Barcode\Barcode, é uma classe abstrata ou seja não pode ser instanciada, com isso vamos fazer uso direto em nosso método.

O componente Barcode é composto por 5 parâmetros sendo eles:

  • Primeiro parâmetro (required) nome do tipo do código de barras, estando disponível:

    • codabar
    • codabar
    • code128
    • code25
    • code25interleaved
    • code39
    • ean13
    • ean2
    • ean5
    • ean8
    • error
    • identcode
    • itf14
    • leitcode
    • planet
    • postnet
    • royalmail
    • upca
    • upce
  • Segundo parâmetro (required) nome do render, estando disponíveis

    • image
    • PDF (necessita do ZendPDF)
    • svg
  • Terceiro parâmetro (optional) parâmetros do barcode.

  • Quarto parâmetro (optional) parâmetros do render.

  • Quinto parâmetro (optional) render Errors, default TRUE para exibir.

Vamos criar uma variável com para armazenar as opçẽos do barcode.

Códgio exemplo dos parâmetros

O texto que estamos passando como parâmetro, será o mesmo impresso no código de barras. Ou seja o valor desejado para compor o códido de barras deve ser informado conforme o tipo de barcode que será implementado.

Vamos criar uma variável para passar os parâmetros do render, podemos passar um array vazio, pois como vimos anteriormente ele é um parâmetro opcional, ou podemos por exempl definir o tipo de imagem que desejamos que o barcode seja criado.

Códgio exemplo dos parâmetros do render

Vamos criar uma variável chamada $barcodeImg, e armazenarmos a estrutura que irá criar o nosso barcode. Como primeiro parâmtro eu defini que será utilizado o tipo de barcode chamado “codabar”__, e o segundo parâmetro eu determino que dever ser criado no formato _“image”

Códgio exemplo dos parâmetros do render código de barras

Agora basta passar a variável $barcodeImg para nossa ViewModel.

Inserir Barcode no ViewModel

Vamos incluir a estrutura pra exibir o nosso código de barras na view index.phtml.

Com isso teremos como retorno uma imagem no formato “jpeg” do nosso barcode.

Resultado implementação código de barras

Viram como é extremamente fácil criar um barcode com o componente Zend\Barcode\Barcode. Claro que nossa implementação foi grosseira e construímos tudo no nosso controller, porem agora que sabemos como implementar basta construir toda sua regra de negócio e somente consumir o resultado no controller.

Abaixo temos alguns outros exemplos de barcode.

Code25

Resultado implementação código de barras code25

Code25interleaved

Resultado implementação código de barras Code25interleaved

code128

Resultado implementação código de barras code128

Foi criado um repositório no Github contendo os códigos implementados neste post.

Bom é isso ai pessoal espero que tenham gostado deste tutorial de como construir barcodes com o Zend Framework 2, até breve!