Usuário com melhor resposta
Boleto Itau Asp.net

Pergunta
-
Boa tarde galera,
Estou precisando de uma ajuda, não sei o pq,mas não estou conseguindo ler o código de barras, já baixei dos leitores diferentes para meu celular, não sei onde que estou errando.
Alguém já passou por isso ?
tenho o código se precisar eu posto, help me !
Respostas
-
Humm... vejamos por onde começamos...
No manual do banco é explicado detalhado isto, vou tentar fazer um resumo.
Temos 2 informações. A linha digitável e o código de barras. A linha digitável é aquele que tem o nrs assinalados na tua imagem.
Primeiro temos que fazer o código de barras. A partir dele, geramos a linha digitável.
Para o Itau o cod de barra é compostos por
Cod do banco (341) +Código da moeda (9) + fator de vencimento + valor do titulo + Nosso numero + Agencia + Conta de cobrança + Digito da Agencia e conta + "000"
A parir deste numero temos que calcular o digito verificado do codigo de barras ( o DAC) e "encaixar " na quarta posição, logo depois do nove.
Para calcular o digito deve ser usar o modulo 10 (vide manual)
o Fator de vencimento é a diferença em dias da data de vencimento do titulo para a data de 07/10/1997
O valor do titulo, basta multiplicar por 100 (retira a virgula) e transformar numa string com 10 digitos
Assim tu terás o código de barras.
- Marcado como Resposta Jeff Valentim quarta-feira, 14 de janeiro de 2015 18:09
Todas as Respostas
-
-
-
-
-
Leandro.
Que é o tipo de código que está gerando ( 2 de 5, code 128)?
Isso aí eu realmente não sei, até pq boleto é um coisa nova pra mim, sei que tem que ser de 2 de 5.
quer que eu post o código que é gerado o código de barras ?
Me ajuda com isso aí :s
-
Jeff.
Eu uso uma dll para gerar o codigo de barras. Somente monto o nr usado no codigo de barras conforme o manual de cada banco e depois gero.
Veja o link que tem a explicação e modelos de como usar a dll.
http://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library
Duvidas, posta aí!.
-
O grande problema de usar esse dll, vou ter que mudar muita coisas e já tem muita coisa.
Estou errando em alguma coisa que não está certo, hehehe, o código de barra é gerado, porém o leitor nao reconhece.
Posso postar pra vc baixar e verificar, logico se estiver afim, talvez sirva até pra vc tbm.
-
private string CodigoBarras25I(string Valor)
{ int f, f1, f2, i;
string s;
string texto;
int fino = 1;
int largo = 4;
int altura = 50;
string[] BarCodes = new string[100];
StringBuilder Codbarras = new System.Text.StringBuilder();
BarCodes[0] = "00110";
BarCodes[1] = "10001";
BarCodes[2] = "01001";
BarCodes[3] = "11000";
BarCodes[4] = "00101";
BarCodes[5] = "10100";
BarCodes[6] = "01100";
BarCodes[7] = "00011";
BarCodes[8] = "10010";
BarCodes[9] = "01010";
for (f1 = 9; f1 >= 0; f1--)
for (f2 = 9; f2 >= 0; f2--)
{
f = f1 * 10 + f2;
texto = "";
for (i = 0; i <= 4; i++)
texto += BarCodes[f1].Substring(i, 1) + BarCodes[f2].Substring(i, 1);
BarCodes[f] = texto;
}
texto = Valor;
if ((texto.Length % 2) != 0)
texto = "0" + texto;
//draw da guarda inicial
Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
// Draw dos dados
while (texto.Length > 0)
{
i = Convert.ToInt32(texto.Substring(0, 2));
texto = texto.Remove(0, 2);
s = BarCodes[i];
for (i = 0; i <= 9; i += 2)
{
if (s[i] == '0') f1 = fino;
else f1 = largo;
Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + f1.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
if (s[i + 1] == '0') f2 = fino;
else f2 = largo;
Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + f2.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
}
}
// draw da guarda final
Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + largo.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
return Codbarras.ToString();
} -
-
Jeff, não terei tempo agora de verificar detalhado o teu código.
Quando ao uso da dll, que te tu tenha idéia, basta adicionar a referencia do arquivo dll, fazer a importação do namespace "BarcodeLib" (Imports BarcodeLib) e trocar todo teu sub por isto:
Private Sub GeraCodigoBarra(ByVal pmCodigoDeBarra As String)
Dim codigobarras As New BarcodeLib.Barcode()
codigobarras.Encode(TYPE.Interleaved2of5, pmCodigoDeBarra, 1030, 400)
codigobarras.SaveImage("C:\CBarraBloqueto.jpg", SaveTypes.JPG)
End SubAo meu ver, tu tens que mudar pouquíssima coisa para usar a dll.
-
vou fazer isso agora, acabei de acertar o que estava falando na linha digitável.
depois de testar eu respondo aqui, obrigado pela ajuda.
- Editado Jeff Valentim quarta-feira, 14 de janeiro de 2015 17:44
-
Humm... vejamos por onde começamos...
No manual do banco é explicado detalhado isto, vou tentar fazer um resumo.
Temos 2 informações. A linha digitável e o código de barras. A linha digitável é aquele que tem o nrs assinalados na tua imagem.
Primeiro temos que fazer o código de barras. A partir dele, geramos a linha digitável.
Para o Itau o cod de barra é compostos por
Cod do banco (341) +Código da moeda (9) + fator de vencimento + valor do titulo + Nosso numero + Agencia + Conta de cobrança + Digito da Agencia e conta + "000"
A parir deste numero temos que calcular o digito verificado do codigo de barras ( o DAC) e "encaixar " na quarta posição, logo depois do nove.
Para calcular o digito deve ser usar o modulo 10 (vide manual)
o Fator de vencimento é a diferença em dias da data de vencimento do titulo para a data de 07/10/1997
O valor do titulo, basta multiplicar por 100 (retira a virgula) e transformar numa string com 10 digitos
Assim tu terás o código de barras.
- Marcado como Resposta Jeff Valentim quarta-feira, 14 de janeiro de 2015 18:09
-
última pergunta. rsrsrs
isso aí que gera meu código de barras, pois meu leitor nao reconhece.
só falta isso o0
string sCampo1, sCampo2, sCampo3;
protected string Mod_dig11(string cVariavel)
string sCampoLivre, sValor, sbarra;
sValor = Convert.ToInt32(_Valor * 100).ToString();
//**************************************************************************************
//Código de Barras
//**************************************************************************************
lNossoNumero = _Contrato.ToString("000000") + _Sequencial.ToString().PadLeft(5, '0');
lNossoNumero += Mod_dig11(lNossoNumero);
sValor = sValor.PadLeft(10, '0');
sValor = FatorVencimento(_DtVencimento) + sValor;
sCampoLivre = Left(_CedenteAgencia, 4).PadLeft(4, '0') + _Carteira.ToString("00").PadLeft(2, '0') +
Left(lNossoNumero, 11).PadLeft(11, '0') + Left(_CedenteConta, 7).PadLeft(7, '0') +
"0";
sbarra = BancoCodigoFormatado() + "9" + sValor + sCampoLivre;
lCodigoBarras = BancoCodigoFormatado() + "9" + Mod_dig11(sbarra) + sValor + sCampoLivre;
{
string lRetorno = "0";
int nSoma = 0, nMult = 2, nIndice;
for (nIndice = cVariavel.Length - 1; nIndice >= 0; nIndice--)
{
nSoma += (Convert.ToByte(cVariavel[nIndice]) - 48) * nMult;
if (nMult == 9) nMult = 2;
else nMult++;
}
nSoma = nSoma * 10;
nSoma = nSoma % 11;
if ((nSoma > 9) || (nSoma < 2)) lRetorno = "1";
else lRetorno = nSoma.ToString();
return lRetorno;
}public string BancoCodigoFormatado()
{
return _BancoCodigo.ToString("000");
} -
-
Jeff.
Acho que o campo livre é o problema.
Tu tens
sCampoLivre = Left(_CedenteAgencia, 4).PadLeft(4, '0') + _Carteira.ToString("00").PadLeft(2, '0') +
Left(lNossoNumero, 11).PadLeft(11, '0') + Left(_CedenteConta, 7).PadLeft(7, '0') +
"0";Para mim é:
Nosso numero com 11 digitos + Agencia de cobranca com 4 digitos + Conta de cobranca com 5 digitos + digitos da agencia e com com 1 digito + "000".
No manual do banco, tem um exemplo sugiro usar os mesmos dados (valor do titulo, nr da conta e data de vencimento) para ver ser o teu programa calcula igual.
-
Leandro postei o codigo errado.
É esse que oq estou usando, te passei de um outro banco.
string sCampo1, sCampo2, sCampo3, sCampo4, sCampo5;
string sCampoLivre, sValor, sbarra;
sValor = Convert.ToInt32(_Valor * 100).ToString();
//**************************************************************************************
//Código de Barras
//**************************************************************************************
sValor = FatorVencimento(_DtVencimento).PadLeft(4, '0') + sValor.PadLeft(10, '0');
//estava _SequNossNume
lNossoNumero = "00000001".PadLeft(7, '0');
lNossoNumero += Mod_dig11(lNossoNumero);
sCampoLivre = _Carteira.ToString("000") + lNossoNumero.Trim();
sCampoLivre += Mod_dig10(_CedenteAgencia + _CedenteConta + _Carteira + lNossoNumero).Trim();
sCampoLivre += _CedenteAgencia.PadLeft(4, '0') + _CedenteConta.PadLeft(5, '0').Trim();
sCampoLivre += Mod_dig10(_CedenteAgencia + _CedenteConta) + "000".Trim();
sbarra = BancoCodigoFormatado() + "9" + sValor + sCampoLivre.Trim();
lCodigoBarras = BancoCodigoFormatado() + "9" + Mod_dig11(sbarra) + sValor + sCampoLivre.Trim();
-
Usei seu código para gerar e testar
BarcodeLib.Barcode codigobarras = new BarcodeLib.Barcode();
codigobarras.Encode(TYPE.Industrial2of5, "34126303000000010010900000001901185429030000", 500,200);codigobarras.SaveImage("C:\\bila\\CBarraBloqueto.jpg", SaveTypes.JPG);Ele gera a imagem perfeitamente, porém o leitor nao ler de forma alguma essa imagem.
-
Usei seu código para gerar e testar
BarcodeLib.Barcode codigobarras = new BarcodeLib.Barcode();
codigobarras.Encode(TYPE.Industrial2of5, "34126303000000010010900000001901185429030000", 500,200);codigobarras.SaveImage("C:\\bila\\CBarraBloqueto.jpg", SaveTypes.JPG);Ele gera a imagem perfeitamente, porém o leitor nao ler de forma alguma essa imagem.
Eu gerei uma impressão deste teu código e fiz a leitura dele em um leitor manual laser, e em um leitor bancário (aquele usado pelos caixas dos bancos). Em ambos os casos funcionou perfeitamente. Acredito que o problema seja o teu leitor.
Outra dica. Usa as medias 1030 e 400 para width e height que o codigo de barras ficará do tamanho exato para o boleto.
codigobarras.Encode(TYPE.Industrial2of5, "34126303000000010010900000001901185429030000", 1030,400);
-
-
-
-
Olá Jeff. Desculpe a demora em responder. Eu estava de férias.
Esta dll, ela gera um jpg com o codigo de barras. Depois disto gerado eu coloco esta imagem na impressão do boleto. Só depois disto que eu tento fazer a leitura do código. Nunca tentei fazer a leitura do código da imagem direto.