JBoletoBean jBoletoBean = new JBoletoBean();
jBoletoBean.setDataDocumento("01/03/2009");
jBoletoBean.setDataProcessamento("19/03/2009");
jBoletoBean.setEspecieDocumento("DM");
jBoletoBean.setCedente("JV FERRAMENTARIA LTDA ME");
jBoletoBean.setNomeSacado("BRAME AUTOMACAO");
jBoletoBean.setEnderecoSacado("Rod. SC 401, KM CELTA SL. 3.12 ");
jBoletoBean.setBairroSacado("João Paulo");
jBoletoBean.setCidadeSacado("Santa Catarina");
jBoletoBean.setUfSacado("SC");
jBoletoBean.setCepSacado("88030-000");
jBoletoBean.setCpfSacado("03.288.379/001-75");
jBoletoBean.setLocalPagamento("Pagável em qualquer banco até o vencimento");
jBoletoBean.setLocalPagamento2("APOS O VENCIMENTO, SOMENTE NO BANCO DO BRASIL");
Vector descricoes = new Vector();
jBoletoBean.setDescricoes(descricoes);
jBoletoBean.setDataVencimento("30/03/2009");
jBoletoBean.setInstrucao1("COBRAR JUROS DEFINIDO PELO BANCO (FACP)");
jBoletoBean.setInstrucao2("///ATENCAO/// -> SEGUNDA VOA");
jBoletoBean.setInstrucao3("PROCEDA OS AJUDOS DE VALORES PERTINENTES");
jBoletoBean.setInstrucao4("PROTESTO: 02.04.2009. A PARTIR DESSA, CONSULTE BB P/ PGTO");
jBoletoBean.setCarteira("17");
jBoletoBean.setAgencia("4464-4");
jBoletoBean.setAceite("N");
jBoletoBean.setQtdMoeda("0");
jBoletoBean.setContaCorrente("16515-8"); //completar com zeros quando necessario
jBoletoBean.setNoDocumento("239 / 324");
jBoletoBean.setNumConvenio("1101354");
jBoletoBean.setNossoNumero("15772100230000027", 18);
jBoletoBean.setValorBoleto("995,00");
HtmlGenerator generator = new HtmlGenerator();
OutputStream fos = response.getOutputStream();
Banco b = new BancoBrasil(jBoletoBean);
generator.geraCodBar(fos, b.getCodigoBarras());
generator.addBoleto(jBoletoBean, b);
out.println(generator.toString());[/code]
Esse é meu código de implementação em html, mas não consigo implementar o código de barra! Não sei como implementar o geraCodbar, alguem tem como ajudar?
Pessoal não sei do JBoleto, mas tem o Bopepo do projeto JRimum:
Ele permite personalizar templates PDFs e gerar um boleto, se for o caso.
Você pode usar o OpenOffice para desenhar o boleto e depois exportar para pdf.
pessoal, resolvi um dos problemas, pois o cod. de barras q não estava gerando era devido ao campo nosso numero estar com 12 dígitos, pois no algoritmo que fiz para calcular o DV, ele estava colocando um 0 a mais…agora tah gerando certinho…
Mas ainda to com o problema em relação a quando o digito verificador calculado for igual a 10, que segundo o BB deve ser substituído por ‘X’… Se alguem tiver uma solução para isso, agradeceria muito a ajuda…
Rapaz, os cinco minutos que o gilmatryx disse que tu ia gastar pode botar na minha conta (ainda sobrou uns dois minutos). Abaixo um código aí pra você com o nosso número com dígito verificador “X” (substituindo o real valor que seria no caso 10, segundo documentação do BB).
Espero ter ajudado. Qualquer coisa estamos à disposição.
Um abraço.
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import br.com.nordestefomento.jrimum.bopepo.BancoSuportado;
import br.com.nordestefomento.jrimum.bopepo.Boleto;
import br.com.nordestefomento.jrimum.bopepo.view.BoletoViewer;
import br.com.nordestefomento.jrimum.domkee.comum.pessoa.endereco.CEP;
import br.com.nordestefomento.jrimum.domkee.comum.pessoa.endereco.Endereco;
import br.com.nordestefomento.jrimum.domkee.comum.pessoa.endereco.UnidadeFederativa;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.Banco;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.DadoBancario;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.Pessoa;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.Agencia;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.Carteira;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.TipoDeCobranca;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.TipoDeTitulo;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.Titulo;
import br.com.nordestefomento.jrimum.domkee.financeiro.banco.febraban.Titulo.EnumAceite;
public class MeuPrimeiroBoletoBB {
public static void main (String[] args) {
/*
* INFORMANDO DADOS SOBRE O CEDENTE.
* */
Pessoa cedente = new Pessoa("PROJETO JRimum", "00.000.208/0001-00");
// Informando dados sobre a conta bancária do cendente.
Banco banco = BancoSuportado.BANCO_DO_BRASIL.create();
ContaBancaria contaBancariaCed = new ContaBancaria(banco);
contaBancariaCed.setBanco(banco);
contaBancariaCed.setNumeroDaConta(new NumeroDaConta(12056, "1"));
contaBancariaCed.setCarteira(new Carteira(18, TipoDeCobranca.SEM_REGISTRO));
contaBancariaCed.setAgencia(new Agencia(3520, "3"));
cedente.addContaBancaria(contaBancariaCed);
/*
* INFORMANDO DADOS SOBRE O SACADO.
* */
Pessoa sacado = new Pessoa("JavaDeveloper Pronto Para Férias", "222.222.222-22");
// Informando o endereço do sacado.
Endereco enderecoSac = new Endereco();
enderecoSac.setUF(UnidadeFederativa.RN);
enderecoSac.setLocalidade("Natal");
enderecoSac.setCep(new CEP("59064-120"));
enderecoSac.setBairro("Grande Centro");
enderecoSac.setLogradouro("Rua poeta dos programas");
enderecoSac.setNumero("1");
sacado.addEndereco(enderecoSac);
/*
* INFORMANDO OS DADOS SOBRE O TÍTULO.
* */
Titulo titulo = new Titulo(contaBancariaCed, sacado, cedente);
titulo.setNumeroDoDocumento("0001045987");
//titulo.setNossoNumero("28960690622");
//titulo.setDigitoDoNossoNumero("8");
titulo.setNossoNumero("10342029000000148");
titulo.setDigitoDoNossoNumero("X");
titulo.setValor(BigDecimal.valueOf(58.95));
titulo.setDataDoDocumento("01/09/2009");
titulo.setDataDoVencimento("18/09/2009");
titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
titulo.setAceite(EnumAceite.N);
/*
* INFORMANDO MAIS DADOS BANCÁRIOS, QUANDO NECESSÁRIO.
* Dependendo do banco, talvez seja necessário informar mais dados além de:
*
* > Valor do título;
* > Vencimento;
* > Nosso número;
* > Código do banco
* > Data de vencimento;
* > Agência/Código do cedente;
* > Código da carteira;
* > Código da moeda;
*
* Definidos como padrão pela FEBRABAN.
* Verifique na documentação.
*/
titulo.setDadosBancarios(new DadoBancario(){});
/*
* INFORMANDO OS DADOS SOBRE O BOLETO.
* */
Boleto boleto = new Boleto(titulo);
boleto.setLocalPagamento("Pagável preferencialmente na Rede X ou em " +
"qualquer Banco até o Vencimento.");
boleto.setInstrucaoAoSacado("Senhor sacado, sabemos sim que o valor " +
"cobrado não é o esperado, aproveite o DESCONTÃO!");
boleto.setInstrucao1("PARA PAGAMENTO 1 até Hoje não cobrar nada!");
boleto.setInstrucao2("PARA PAGAMENTO 2 até Amanhã Não cobre!");
boleto.setInstrucao3("PARA PAGAMENTO 3 até Depois de amanhã, OK, não cobre.");
boleto.setInstrucao4("PARA PAGAMENTO 4 até 04/xx/xxxx de 4 dias atrás " +
"COBRAR O VALOR DE: R$ 01,00");
boleto.setInstrucao5("PARA PAGAMENTO 5 até 05/xx/xxxx COBRAR O VALOR " +
"DE: R$ 02,00");
boleto.setInstrucao6("PARA PAGAMENTO 6 até 06/xx/xxxx COBRAR O VALOR " +
"DE: R$ 03,00");
boleto.setInstrucao7("PARA PAGAMENTO 7 até xx/xx/xxxx COBRAR O VALOR " +
"QUE VOCÊ QUISER!");
boleto.setInstrucao8("APÓS o Vencimento, Pagável Somente na Rede X.");
/*
* GERANDO O BOLETO BANCÁRIO.
* */
// Instanciando um objeto "BoletoViewer", classe responsável pela geração
// do boleto bancário.
BoletoViewer boletoViewer = new BoletoViewer(boleto);
// Gerando o arquivo. No caso o arquivo mencionado será salvo na mesma
// pasta do projeto. Outros exemplos:
// WINDOWS: boletoViewer.getAsPDF("C:/Temp/MeuBoleto.pdf");
// LINUX: boletoViewer.getAsPDF("/home/temp/MeuBoleto.pdf");
File arquivoPdf = boletoViewer.getPdfAsFile("MeuPrimeiroBoleto.pdf");
// Mostrando o boleto gerado na tela.
mostreBoletoNaTela(arquivoPdf);
}
private static void mostreBoletoNaTela(File arquivoBoleto) {
java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
try {
desktop.open(arquivoBoleto);
} catch (IOException e) {
e.printStackTrace();
}
}
}
provavelmente não altererei tudo o q estou usando, pois a servlet q estou usando para controle, já está funcionando certinho… mas com certeza usarei esta api futuramente, até pq ela tem suporte a mais bancos que o JBoleto…