O boleto é uma forma de cobrança, que possui regras a serem seguidas na sua confecção. O padrão adotado no Brasil é fornecido pela Febraban – Federação Brasileira de Bancos.

O layout , foi desenvolvido em HTML e CSS para ser impresso na tela um boleto.A Febraban dita os parâmetros a serem seguidos pelos bancos para a confecção de boletos para pagamentos no sistema bancário nacional.Seguindo esse documento que está no site da Febraban, vamos ao trabalho.

Segue em anexo para uso, um projeto de um indiano chamado Raj que disponibiliza o script em php para gerar código de barras.O arquivo é o 'barcode.inc.php'. Este arquivo tem uma função que iremos utilizar chamada barcodegenrator().

Segue o script boleto.php que recebe via post informações que irão complementar o boleto e utilizando do código de barras gerado pela função barcodegenrator() ,imprimirá um boleto bancário:

Script PHP

Na primeira linha é incluso o arquivo para impressão do código de barras, desenvolvido pelo indiano Raj Trivedi, através da função require_once('barcode.inc.php');

Faz necessário, alimentar o boleto com algumas informações, isso pode vir de um banco de dados, de um webservice, via post ou get... Cabe a você escolher, neste caso os dados são oriundos de um formulário via post, que recebe as variáveis que serão impressas nos respectivos campos do boleto, através do comando echo.

Essas informações de cobrança são pertinentes a um sistema de cobrança específico, que já emite dados como linha digitável e retorna informações da nota fiscal, nosso número, código de barras, que são informações da empresa que esta apta a receber pagamentos via boleto bancário, isto é, ela esta habilitada pelo banco que é cliente a receber pagamentos via boleto .

Na fonte de dados utilizada, foi corrigindo o campo data para o formato dia/mês/ano pois nesse caso a data vem no padrão americano, ou seja (YYYY/MM/DD - Respectivamente Ano, mês e dia .)

A função date, utilizada retorna uma string no formato de data especificada.Seu uso neste exemplo permite a correção da data recebida para imprimirmos no padrão brasileiro de inicialmente o dia, depois o mês e por fim o ano. Como no exemplo:

Listagem 1: Usando a função date

$dataVencimento = date('d/m/Y', strtotime($dataVencimento));

$dataProcessamento=date('d/m/Y',strtotime($dataProcessamento));

Ao instanciar barCodeGenrator,a função que gera código de barras, o parâmetro 1 = gera arquivo, 0 = exibe na tela, o 4º e 5º parâmetro define o tamanho do código de barras em pixels(largura e altura)) , o primeiro parâmetro é o numero do código de barras que não esta sendo gerando manualmente mas recebendo o via post, esse numero é fornecido pelo banco do emissor do boleto .

Listagem 2: Instanciando barCodeGenrator

new barCodeGenrator($codigoBarras,1,$numeroNota.'codigo_de_barras.gif', 434.645669291, 56.692913386, false);

Formulário HTML do boleto:

O boleto segue os padrões mínimos estabelecidos pela Febraban para sua exibição adequada e sua posterior impressão.

Basicamente colocamos as tags css que vão dimensionar e posicionar os elementos do boleto na região correta.A segunda parte para exibição correta do boleto é a geração de um código de barras no padrão intercalado 2 de 5.

O padrão intercalado 2 de 5 funciona no Brasil tanto para a indústria como para confecção de boletos pela sua alta densidade, isto é, a fácil leitura por meio de leitores óticos específicos para ler estes códigos. Para que o código este correto , é necessário que exista uma quantidade par de números na sequência do código, quando não existir é incluído zeros a esquerda do código para completar a sequência a fim de mantê-la par.

”Layout

Figura 1: Layout do boleto gerado

Arquivo barCodeGenrator.inc.php

A classe barCodeGenrator no arquivo barCodeGenrator.inc.php gera o código de barras que é exibido no boleto.Vale salientar algumas das funções pertencentes a esta classe:

  • imagecreate;
  • imagecolorallocate;
  • imagefilledrectangle;
  • imagestring;
  • put_img;
  • imagegif;
  • imagedestroy.

A função imagecreate do php cria uma imagem de apenas uma dimensão, em largura e altura.Ela recebe dois parâmetros para sua execução:

Listagem 3: Função imagecreate

imagecreate($width_bar_max,$height_bar_max);

Onde $width_bar_max,$height_bar_max são respectivamente a largura máxima da imagem e a altura máxima da imagem. A função imagecolorallocate adiciona cor a uma imagem criada. Na classe, para a construção do código, será criado uma sequência de imagens retangulares nas cores branca e preta para representar adequadamente o código de barras:

Listagem 4: Gerando imagens

$cl_black = imagecolorallocate($img, 0, 0, 0); 
      $cl_white = imagecolorallocate($img, 255, 255, 255);

A variável $cl_black recebe o retorno da função imagecollorallocate para uma $img, com a cor preta (0,0,0) do padrão de cores rgb.Para criar o retângulo branco os parâmetros são (255,255,255).

A função imagefilledrectangle desenha um retângulo preenchido com os parâmetros de coordenadas (xi,yi) e (xf,yf) ou seja as coordenadas iniciais e finais da parte de cima e do lado esquerdo até a parte de baixo e do lado direito, para completar a imagem do código.

A função imagestring desenha uma string na tela , recebendo como parâmetros as coordenadas e uma string a ser impressa.

A função put_img realiza o envio de um arquivo de imagem ao servidor ,recebendo como parâmetros uma imagem já criada e o path até o local a ser guardado.Cabe ressaltar que a pasta a ser guardada deve estar com permissões de leitura/gravação para aceitar o arquivo criado da imagem.

A função imagegif cria um arquivo gif a partir de uma imagem.Ex:imagegif($image).

A função imagedestroy não é muito difícil de entender seu funcionamento, ela libera qualquer parte da memória que esta associada a uma determinada imagem e seu parâmetro é a própria imagem criada.Ex:imagedestroy($image);

Toda a lógica da geração do código de barras esta associada ao padrão utilizado, no caso, o intercalado 2 de 5, onde retângulos são criados e posicionados dentro de uma imagem criada para recebê-los e após o agrupamento esta imagem de código de barras é gerada no formato gif e salva no servidor em uma pasta com permissão de escrita, após este processo o boleto é exibido em html com os demais campos recebendo os dados de uma fonte de dados e a imagem gerada pelo barcodegenrator é associada e exibida concomitantemente.

O código de barras no padrão intercalado, gerado pelo arquivo:

Código de barras gerado em um arquivo GIF

Figura 2: Código de barras gerado em um arquivo GIF

Outrossim, vale salientar que neste artigo é explicado como imprimir um boleto, onde os dados do boleto são originários de uma fonte de dados que fornece os dados para alimentar os principais campos do boleto e principalmente o campo de linha digitável e código de barras.Esses campos podem ser gerados através de cálculos que neste exemplo não foi abordado.

Referências