Caelum Stella - boleto gerando 'Java Heap Space'

boa tarde pessoal.
tenho esse método aqui: http://gist.github.com/572303 que gera um boleto.
coloquei isso dentro de um for:

[code]public void gerarBoletos() {
try {
selecionarParcelasBaixa();
int mes = 0;
List boletos = new ArrayList();

        for(MovimentacaoParcela mp : parcelasABaixar)
        {
            Aluno aluno = mp.getMovimentacao().getAluno();
            String valorPagar = mp.getMovimentacao().getVlUnitario().toString();
            Date dataProcessamento = new Date();
            Calendar vencimento = Calendar.getInstance();
            vencimento.add(Calendar.MONTH, mes);
            
            Date dataVencimento = vencimento.getTime();
            
            Boleto boleto = BoletoUtils.gerarBoleto(
                    dataProcessamento, 
                    dataVencimento,
                    contaCorrente,
                    aluno, valorPagar, instrucoes, locaisPagamento);
            boletos.add(boleto);
            mes++;
        }
        
        BoletoUtils.gerarArquivoBoleto(boletos.toArray(new Boleto[boletos.size()]));
    } catch (Exception e) {
        e.printStackTrace();
        addMensagemErro(e);
    }
}[/code]

mas acontece isso:

Caused by: javax.faces.el.EvaluationException: java.lang.OutOfMemoryError: Java heap space at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98) ... 66 more Caused by: java.lang.OutOfMemoryError: Java heap space at com.lowagie.text.Image.getInstance(Unknown Source) at com.lowagie.text.Image.getInstance(Unknown Source) at br.com.caelum.stella.boleto.transformer.PDFBoletoWriter.writeImage(PDFBoletoWriter.java:117) at br.com.caelum.stella.boleto.transformer.BoletoTransformer.transform(BoletoTransformer.java:76) at br.com.caelum.stella.boleto.transformer.BoletoGenerator.to(BoletoGenerator.java:123) at br.com.caelum.stella.boleto.transformer.BoletoGenerator.toPDF(BoletoGenerator.java:110) at br.com.caelum.stella.boleto.transformer.BoletoGenerator.toPDF(BoletoGenerator.java:50) at br.com.caelum.stella.boleto.transformer.BoletoGenerator.toPDF(BoletoGenerator.java:38) at br.com.athus.util.BoletoUtils.gerarArquivoBoleto(BoletoUtils.java:93) at br.com.athus.manageds.ManagedMovimentoCaixa.gerarBoletos(ManagedMovimentoCaixa.java:173)

segundo o trace, é neste metodo:

[code]public static void gerarArquivoBoleto(Boleto…boletos) throws IOException
{
String nomeArquivo =
CaminhoUtils.CAMINHO_PASTA_ATHUS + NossoNumeroUtils.getNossoNumeroAtual().toString()
+".pdf";

    //Se gerar mais de um boleto, cria um nome aleatório para o arquivo
    if (boletos.length > 1)
        nomeArquivo = CaminhoUtils.CAMINHO_PASTA_ATHUS + RandomStringUtils.random(5) + ".pdf";

    BoletoGenerator gerador = new BoletoGenerator(boletos);
    gerador.toPDF(nomeArquivo);
    
    //Após a geração, abre o arquivo pdf
    if(Desktop.isDesktopSupported())
        Desktop.getDesktop().open(new File(nomeArquivo));
}[/code]

li em um posto do blog da caelum que o stella boleto consome memória…tem algo que possa ser feito?

Para a geração de boletos tem também o Bopepo do projeto JRimum:

Além de gerar um boleto padrão sem esforço algum…

Se vc quiser personalizar o boleto, ele permite personalização através de templates PDFs.
Você pode usar o OpenOffice para desenhar o boleto e depois exportar para pdf. É simples.

Ver tutoriais.

Se vc quer gerar vários boletos em um único PDF vc pode fazer da seguinte forma:

BoletoViewer.groupInOnePDF("TesteVariosEmUmUnicoArquivo.pdf", boletos);

Ou se vc quer em arquivos separados:

List<File> files = BoletoViewer.onePerPDF("./", ".pdf", boletos);

Se precisar de ajuda e dúvidas no grupo o pessoal te ajuda. Eles são especialistas em boletos e arquivos bancários.

Atualmente o Bopepo tem um total de 8 bancos suportados:

http://www.jrimum.org/bopepo/wiki/Componente/BancosSuportados

E com mais implementações em andamento, com o que o pessoal vai pedindo:

Novo caso (SICOB) da Caixa Econômica Federal
http://groups.google.com.br/group/javasf/browse_thread/thread/c4a2d20f69f7d900

Novo caso (SIGCB) da Caixa Econômica Federal
http://groups.google.com/group/jrimum-community/browse_thread/thread/8462b94d6f479eac?hl=pt-BR_US

Novo banco (adição do Santander)
http://groups.google.com/group/jrimum-community/browse_thread/thread/c8426227c877fa49?hl=pt-BR_US

Mais informações sobre o Projeto Bopepo …

T+, qualquer dúvida é só chegar lá no grupo.

hm, vou dar uma olhada
esotu participando do grupo, qualquer coisa posto la :stuck_out_tongue:

zorba,

Quantos boletos estão sendo gerados dentro do for?

Eu utilizo o Stella-boleto, mas sempre gero 1 boleto por vez.

o pior é que é só um mesmo, mas o ‘for’ existe pq o usuário pode selecionar mais de uma parcela

ta, saca isso, no bopepo

contaBancariaCed.setNumeroDaConta( new NumeroDaConta(Integer.parseInt(cc.getContaCorrente()), ""+cc.getDvContaCorrente()));

e a minha conta do banco começa com 0, mas como e Integer, ele corta o zero a esquerda.
:S alguem ai do jrimum não pensou nisso :stuck_out_tongue: infelizmente.
ta dando erro aqui por causa desse 0 a esquerda que eu preciso :slight_smile:

Ok zorba,

Tenta assim:

contaBancariaCed.setNumeroDaConta(new NumeroDaConta(Integer.valueOf(cc.getContaCorrente().trim()), ""+cc.getDvContaCorrente()));

Agora se tirver caracter que não seja dígito, tipo (".","/","-"), aí vai ter que tratar.

Se não for isso diz qual é o erro blz?

vou tentar
outra duvida: cada banco tem a sua validação para o numero e codigo da conta?

edit:
deu certo o trim(), mas agora ta dando isso

Caused by: java.lang.NullPointerException at br.com.nordestefomento.jrimum.bopepo.view.ViewerPDF.setAbstractCPRFCedente(ViewerPDF.java:739) at br.com.nordestefomento.jrimum.bopepo.view.ViewerPDF.preencher(ViewerPDF.java:475) at br.com.nordestefomento.jrimum.bopepo.view.ViewerPDF.processarPdf(ViewerPDF.java:336) at br.com.nordestefomento.jrimum.bopepo.view.ViewerPDF.getBytes(ViewerPDF.java:282) at br.com.nordestefomento.jrimum.bopepo.view.BoletoViewer.getPdfAsByteArray(BoletoViewer.java:341) at br.com.nordestefomento.jrimum.bopepo.view.ViewerPDF.groupInOnePDF(ViewerPDF.java:157) at br.com.nordestefomento.jrimum.bopepo.view.BoletoViewer.groupInOnePDF(BoletoViewer.java:416) at br.com.nordestefomento.jrimum.bopepo.view.BoletoViewer.groupInOnePDF(BoletoViewer.java:145) at br.com.athus.util.BoletoBopepoUtils.showBoletos(BoletoBopepoUtils.java:112) at br.com.athus.manageds.ManagedMovimentoCaixa.gerarBoletos(ManagedMovimentoCaixa.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.el.parser.AstValue.invoke(AstValue.java:191) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84) ... 67 more

meu metodo que gera o pdf:

[code]public static void showBoletos(Boleto… boletos)
{
String nomeArquivo =
CaminhoUtils.CAMINHO_PASTA_ATHUS + NossoNumeroUtils.getNossoNumeroAtual().toString()
+".pdf";

    File boletoViewer = BoletoViewer.groupInOnePDF(nomeArquivo, Arrays.asList(boletos));
    
    java.awt.Desktop desktop = java.awt.Desktop.getDesktop();

    try {
        desktop.open(boletoViewer);
    } catch (IOException e) {
        e.printStackTrace();
    }
}[/code]

Não, validamos apenas o necessário para gerar o código de barras…
Então, se vc passar o código da conta = 1 e o dígito verificador igual a zero, então esses serão os valores usados para gerar o código de barras.

Quanto a exceção,…

Vc deve fornecer um cnpj/cpf para o cedente do título.

Veja o exemplo completo em:

http://www.jrimum.org/bopepo/wiki/Componente/Documentacao/Tutoriais/GeracaoDeBoletoPadrao

funcionou :smiley: era só o cnpj mesmo
muito obrigado gilmar :slight_smile:
abraços

[quote=gilmatryx]Para a geração de boletos tem também o Bopepo do projeto JRimum:

Além de gerar um boleto padrão sem esforço algum…

Se vc quiser personalizar o boleto, ele permite personalização através de templates PDFs.
Você pode usar o OpenOffice para desenhar o boleto e depois exportar para pdf. É simples.

Ver tutoriais.

Se vc quer gerar vários boletos em um único PDF vc pode fazer da seguinte forma:

BoletoViewer.groupInOnePDF("TesteVariosEmUmUnicoArquivo.pdf", boletos);

Ou se vc quer em arquivos separados:

List<File> files = BoletoViewer.onePerPDF("./", ".pdf", boletos);

Se precisar de ajuda e dúvidas no grupo o pessoal te ajuda. Eles são especialistas em boletos e arquivos bancários.

Atualmente o Bopepo tem um total de 8 bancos suportados:

http://www.jrimum.org/bopepo/wiki/Componente/BancosSuportados

E com mais implementações em andamento, com o que o pessoal vai pedindo:

Novo caso (SICOB) da Caixa Econômica Federal
http://groups.google.com.br/group/javasf/browse_thread/thread/c4a2d20f69f7d900

Novo caso (SIGCB) da Caixa Econômica Federal
http://groups.google.com/group/jrimum-community/browse_thread/thread/8462b94d6f479eac?hl=pt-BR_US

Novo banco (adição do Santander)
http://groups.google.com/group/jrimum-community/browse_thread/thread/c8426227c877fa49?hl=pt-BR_US

Mais informações sobre o Projeto Bopepo …

T+, qualquer dúvida é só chegar lá no grupo.[/quote]

Caro colega,

Estou desenvolvendo uma aplicação utilizando do seu projeto Bopepo
no qual estou adorando a forma como foi desenvolvido.
Uma coisa que me deixou em dúvida é a questão dos tipos de documentos do objeto Titulo ( TipoDeTitulo )
o projeto ainda não conta com os layouts para estes tipos de documentos?

Como que fica a possibilidade de implementação destes modelos?
Agradeço a atenção.
E fica meus parabens pelo projeto

Eu acho que você tá procurando alguma forma de personalizar o boleto, é isso?

Dá uma olhada na página de tutoriais do projeto. Lá tem um tutorial sobre a personalização e uma vídeo aula que pode ajudar também.

Se suas dúvidas continuarem, passa lá no grupo que o pessoal te ajuda com certeza!

Valeu!

Tem como saber se o boleto já foi pago na agencia, ou seja, existe algum serviço que verifica se tal boleto já foi pago, como funciona este serviço, caso não exista como você verificam se o boleto já foi pago.
Desde já agradeço pela atenção.

[quote=jabi]Tem como saber se o boleto já foi pago na agencia, ou seja, existe algum serviço que verifica se tal boleto já foi pago, como funciona este serviço, caso não exista como você verificam se o boleto já foi pago.
Desde já agradeço pela atenção.[/quote]

Tenho a mesma duvida … se alguem ajudar agradeço…

Att:
Déscio Oliveira

Tem sim.

Bom, a emissão de boletos está vinculada a uma conta bancária, se a conta é sua, você pode ver o extrato da conta ou,… para serviços contratados, você pode receber um arquivo bancário contendo as situações dos boletos.

Em ambos, o boleto deve ter um número identificador, que é para vc saber como identificar o boleto. Nos serviços CNAB, por exemplo, vc pode verificar se o boleto foi pago ou não através desse número (normalmente chamando de “nosso número”).

Para mais informações entre em contato com o gerente da conta bancária em questão.

Bom dia Amigos.

Alguém poderia me dizer como alterar
a parte de cima do boleto stella…

Agradeço desde já.