 Gerando
Código de Barras na Web
           Gerando
Código de Barras na Web      

Precisando gerar código de barras para boletos bancários na Web ?
Então ganhou o dia. 
 
Neste artigo eu vou mostrar como você pode fazer isto de maneira simples e objetiva. Veja bem , eu não vou mostrar como gerar a linha digitável , para fazer isto você deve consultar o manual do banco para o qual vai gerar os boletos. Cada banco trabalha com sua própria modalidade de cobrança e existem algumas diferenças entre como cada banco trata este serviço.
Para você não ficar órfão abaixo uma visão geral sobre o layout dos boletos bancários antes de mostrar o nosso exemplo prático:
Leiaute dos dados no boleto bancário
No boleto bancário, existem dois campos com formatação especial:
o próprio código de barras - a esquerda em baixo e
a linha digitável - a direita em cima.
Os leiautes de cada um desse dados são diferentes, como abaixo:
Código de barras:
| Posição | Conteúdo | 
| 1 a 3 | Número do banco | 
| 4 | Código da Moeda - 9 para Real | 
| 5 | Digito verificador do Código de Barras | 
| 6 a 9 | Fator de Vencimento (diferença em dias entre o vencimento e 07/10/1997) | 
| 10 a 19 | Valor (8 inteiros e 2 decimais) | 
| 20 a 44 | Campo Livre definido por cada banco | 
Linha digitável:
BBBMC.CCCCd
CCCCC.CCCCCd CCCCC.CCCCCd D VVVVVVVVVVVVVV
onde:
B - número do banco
M - Moeda (sempre 9 - real)
V - valor
C - campo livre - depende do banco
D - Digito verificador do código de barras
d - digito verificados da linha digitáveis
Calculo do Dígito Verificador do Código de Barras (quinta posição)
- Pega-se as 43
posições (44 menos a quinta).
- Multiplica-se cada posição, a partir da última para a
primeira, por 2,3,4,5,6,7,8 e 9 sucessivamente. 
- Soma-se os resultados.
- Multiplica-se por 10.
- Divide-se por 11. Se o resto for 10 ou 0, o digito é 1. Se
não, o resto é o digito.
Para mais informações sobre o assunto leia os artigos :
Agora vamos ao nosso exemplo prático. Ele irá gerar um boleto bancário on-line a partir dos dados que usuário fornecer em um formulário. Abaixo temos a tela principal que nada mais é que um formulário onde informamos alguns dados para geração do código de barras:
|  | 
Ao clicar no botão - Gerar Boleto - o código de barras é gerado e o boleto é exibido na tela conforme a seguinte figura:
|  | 
Você deve estar se perguntando : "De onde vieram os outros dados que estão sendo exibidos no boleto : data de vencimento , valor , data do documento , etc.. ?
Ora , estes dados estão em um banco de dados que o código asp acessa para montar o boleto. Eu estou usando um banco de dados Access de nome Dados.mdb que contém a tabela cliente e é nela que eu vou buscar os dados para preencher o boleto.
Abaixo a estrutura da tabela clientes.
Não a tomem como exemplo pois não esta normalizada 
e não deve ser usada na forma como eu estou usando neste exemplo. Fiz isto por 
que estou com preguiça de criar relacionamentos e o meu objetivo neste artigo é 
mostrar o boleto e o código de barras. Com certeza você fará uma modelagem de 
dados mais decente. 
|  | 
O código formulário eu não vou mostrar pois é puro HTML , vou apenas chamar a atenção da linha de comando html que chama o arquivo boleto.asp. Quando você clicar no botão - Gerar Boleto - haverá um submit que invocará o arquivo boleto.asp . Isto esta definido na seguinte linha:
<form method="POST" action="boleto.asp">
No arquivo boleto.asp vou destacar as seguintes linhas de código :
| <!--#include file="funcoes.inc" --> | 
| esta linha faz uma inclusão do arquivo funcoes.inc que possui as rotinas que serão usadas para gerar o código de barras | 
| dim moeda, agencia, conta , dv_conta 
    , carteira , connstr connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("dados/dados.mdb") & ";" Set oRec = Server.CreateObject("ADODB.RecordSet") oRec.Open "select * from cliente" , connstr , 1,3,1 | 
| As linhas acima declaram as variáveis usadas , definem a string de conexão ao banco de dados ; cria o objeto Recordset ADO , e abrem o recordset | 
| valor_doc = request.form("valor") dt_doc = oRec("dt_doc") dt_venc = oRec("dt_venc") banco = request.form("banco") moeda= request.form("moeda") agencia = request.form("agencia") conta = request.form("conta") dv_conta = request.form("dv") carteira = request.form("carteira") num_doc = oRec("num_doc") nossonumero = oRec("nosso_num") dv_nossonumero = Calculo_DV10(agencia & conta & carteira & nossonumero) cod_barra = Monta_CodBarras() linha_dig = Linha_Digitavel(cod_barra) nossonumero = carteira & "/" & nossonumero & "-" & dv_nossonumero sacado = oRec("nome") end_sacado = oRec("endereco") & "<br>CEP " & oRec("cep") & " - " & oRec("cidade") & " / " & oRec("uf") cod_cli = oRec("cod") oRec.Close | 
| Aqui eu estou atribuindo os valores passados pelo formulário e os extraídos da tabela para variáveis que irão ser usadas para criar o boleto | 
Vou deixar o código pronto para você pegar e usar mas quero deixar claro que ele não é de minha autoria e que embora a rotina gere os códigos de barra de forma correta eu não em preocupei em gerar o código e a linha digitável conforme o padrão de qualquer banco , usei o logotipo do banco Itaú apenas como exemplo.
Você deverá consultar o manual do banco para o qual deseja gerar o boleto e fazer os ajustes.
O código de barras completo esta no Super DVD Visual Basic 6
Referências:
José Carlos Macoratti