Boleto bancário para download [RESOLVIDO]

12 respostas
B

Boa tarde PessoALL.

Gostaria de uma ajuda aqui do forum.
estou querendo gerar um boleto em PDF e mandar para o usuario fazer o download.
Utilizo Flex + Eclipse + BlazeDS, e o componente Jrimum, que a principio é muito facil de utilizar e tem suporte a varios bancos.

Consegui fazer funcionar localmente, exportanto o PDF, mas pela WEB não consigo fazer funcionar.
Será que alguém pode me dar um luz ??

O código que eu utilizo é o exemplo do tutorial do projeto.

public static void main(String[] args) {    	
    	try
		{
            // INFORMANDO DADOS SOBRE O CEDENTE.
            Cedente cedente = new Cedente("PROJETO JRimum", "00.000.208/0001-00");

            // INFORMANDO DADOS SOBRE O SACADO.             
            Sacado sacado = new Sacado("JavaDeveloper Pronto Para Férias", "[CPF removido]");

            // 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 DADOS SOBRE O SACADOR AVALISTA.            
            SacadorAvalista sacadorAvalista = new SacadorAvalista("JRimum Enterprise", "00.000.000/0001-91");

            // Informando o endereço do sacador avalista.
            Endereco enderecoSacAval = new Endereco();
            enderecoSacAval.setUF(UnidadeFederativa.DF);
            enderecoSacAval.setLocalidade("Brasília");
            enderecoSacAval.setCep(new CEP("59000-000"));
            enderecoSacAval.setBairro("Grande Centro");
            enderecoSacAval.setLogradouro("Rua Eternamente Principal");
            enderecoSacAval.setNumero("001");
            sacadorAvalista.addEndereco(enderecoSacAval);

            // INFORMANDO OS DADOS SOBRE O TÍTULO.            
            // Informando dados sobre a conta bancária do título.
            ContaBancaria contaBancaria = new ContaBancaria(BancosSuportados.BANCO_SICREDI.create());
            contaBancaria.setNumeroDaConta(new NumeroDaConta(123456, "3"));
            contaBancaria.setCarteira(new Carteira(1, TipoDeCobranca.SEM_REGISTRO));                
            contaBancaria.setAgencia(new Agencia(1234, "2"));                
            
            Titulo titulo = new Titulo(contaBancaria, sacado, cedente, sacadorAvalista);
            titulo.setNumeroDoDocumento("123456");
            titulo.setNossoNumero("99345678");
            titulo.setDigitoDoNossoNumero("0");
            titulo.setValor(BigDecimal.valueOf(0.23));
            titulo.setDataDoDocumento(new Date());
            titulo.setDataDoVencimento(new Date());
            titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
            titulo.setAceite(EnumAceite.A);
            titulo.setDesconto(new BigDecimal(0.05));
            titulo.setDeducao(BigDecimal.ZERO);
            titulo.setMora(BigDecimal.ZERO);
            titulo.setAcrecimo(BigDecimal.ZERO);
            titulo.setValorCobrado(BigDecimal.ZERO);                

            CampoLivreSicredi clSICREDI = new CampoLivreSicredi(titulo);


            // INFORMANDO OS DADOS SOBRE O BOLETO.
            Boleto boleto = new Boleto(titulo,clSICREDI);
            
            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("Boleto.pdf");                        
            
            // Mostrando o boleto gerado na tela.                
            mostreBoletoNaTela(arquivoPdf);                                                	
                            
		}
		catch(Exception Banco)
		{			
			System.out.println("Erro: "+Banco);  			
		}
    }    		

    private static void mostreBoletoNaTela(File arquivoBoleto) {

            java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
            
            try {
                    desktop.open(arquivoBoleto);
            } catch (IOException e) {
                    e.printStackTrace();
            }
    }

12 Respostas

Lindberg

mostra o erro !! pra gente olhar …

é diferente para recuperar o path de um arquivo entre aplicacao web e desktop.

nesta linha: File arquivoPdf = boletoViewer.getPdfAsFile(“Boleto.pdf”);

String rootDir = getServletContext().getRealPath("/WEB-INF/relatorio/cc");
String reportFilename = rootDir + java.io.File.separator + “arquivo.txt”;

B

Lindberg,

retiro a linha:

e adiciono as linhas abaixo:

String rootDir = getServletContext().getRealPath("/WEB-INF/relatorio/cc"); String reportFilename = rootDir + java.io.File.separator + "arquivo.txt";
pra ver se mostra o path da aplicação?

Não entendi muito bem.

Lindberg

não tenho experiencia com estes framwork … mas
se voce ja tem o PDF pronto para abrir, eu faço assim na minha [size=18][color=blue]SERVLET[/color][/size];
ver se ajuda …

String rootTempp = getServletContext().getRealPath("/temppp");   // esta pasta precisa de permissao para escrever
String tempPdf = rootTempp + java.io.File.separator + ""+loginw+"Rel.pdf";
String rootDir = getServletContext().getRealPath("/WEB-INF/relatorio");  
String reportFilename = rootDir + java.io.File.separator + nomerelw;

java.sql.Connection con = ConexaoBdWeb.conecta_rel();

Statement statement = con.createStatement();

ResultSet rs = statement.executeQuery(consultaSQLw);  

JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
JasperPrint jasperPrint = JasperFillManager.fillReport(reportFilename, parameters, jrRS);  
JasperPrintManager.printReportToPdfFile(jasperPrint, tempPdf);

response.setHeader("Content-Disposition","attachment; filename="+tempPdf);
response.setContentType("application/pdf"); 
response.setContentType("application/download");
response.setHeader("Pragma", "no-cache");
response.sendRedirect("temppp/"+loginw+"Rel.pdf");
gilmatryx

Olá pessoal

A resposta está na própria documentação do projeto:

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

Não precisa usar File, esse é um exemplo para rodar no Desktop, basta pegar os bytes do arquivo:

byte[] pdfAsBytes = viewer.getPdfAsByteArray();

Quaquer coisa, lá no grupo do JRimum muitas pessoas já tiveram essa dúvida também:

http://groups.google.com.br/group/jrimum-community

Att

B

gilmatryx..

No site do projeto tem esse código abaixo, só que como sou leigo ainda em WEB não entendi como faço para visualizar.

Boleto boleto = createBoleto();
BoletoViewer viewer = new BoletoViewer(boleto);
byte[] pdfAsBytes = viewer.getPdfAsByteArray();

response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=boleto.pdf");

OutputStream output = response.getOutputStream();
output.write(pdfAsBytes);

response.flushBuffer();

eu coloco a programação acima no código abaixo, no final ficando assim?

.
.
.
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.  
Boleto boleto = createBoleto();
BoletoViewer viewer = new BoletoViewer(boleto);
byte[] pdfAsBytes = viewer.getPdfAsByteArray();

response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=boleto.pdf");

OutputStream output = response.getOutputStream();
output.write(pdfAsBytes);

response.flushBuffer();
.
.
.

Já fiz relatório com IReport que utiliza o byte[], e eu consigo visualizar na web.
só que tentei com o projeto do boleto e deu erro.
Tens a programação pronta, um exemplo pra mim se basear?
Desde já agradeço pela ajuda.

B

Pra mim testar, ficaria assim?

public static void main(String[] args, HttpServletResponse response) {    	
    	try
		{
            // INFORMANDO DADOS SOBRE O CEDENTE.
            Cedente cedente = new Cedente("PROJETO JRimum", "00.000.208/0001-00");

            // INFORMANDO DADOS SOBRE O SACADO.             
            Sacado sacado = new Sacado("JavaDeveloper Pronto Para Férias", "[CPF removido]");

            // 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 DADOS SOBRE O SACADOR AVALISTA.            
            SacadorAvalista sacadorAvalista = new SacadorAvalista("JRimum Enterprise", "00.000.000/0001-91");

            // Informando o endereço do sacador avalista.
            Endereco enderecoSacAval = new Endereco();
            enderecoSacAval.setUF(UnidadeFederativa.DF);
            enderecoSacAval.setLocalidade("Brasília");
            enderecoSacAval.setCep(new CEP("59000-000"));
            enderecoSacAval.setBairro("Grande Centro");
            enderecoSacAval.setLogradouro("Rua Eternamente Principal");
            enderecoSacAval.setNumero("001");
            sacadorAvalista.addEndereco(enderecoSacAval);

            // INFORMANDO OS DADOS SOBRE O TÍTULO.            
            // Informando dados sobre a conta bancária do título.
            ContaBancaria contaBancaria = new ContaBancaria(BancosSuportados.BANCO_SICREDI.create());
            contaBancaria.setNumeroDaConta(new NumeroDaConta(123456, "3"));
            contaBancaria.setCarteira(new Carteira(1, TipoDeCobranca.SEM_REGISTRO));                
            contaBancaria.setAgencia(new Agencia(1234, "2"));                
            
            Titulo titulo = new Titulo(contaBancaria, sacado, cedente, sacadorAvalista);
            titulo.setNumeroDoDocumento("123456");
            titulo.setNossoNumero("99345678");
            titulo.setDigitoDoNossoNumero("0");
            titulo.setValor(BigDecimal.valueOf(0.23));
            titulo.setDataDoDocumento(new Date());
            titulo.setDataDoVencimento(new Date());
            titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
            titulo.setAceite(EnumAceite.A);
            titulo.setDesconto(new BigDecimal(0.05));
            titulo.setDeducao(BigDecimal.ZERO);
            titulo.setMora(BigDecimal.ZERO);
            titulo.setAcrecimo(BigDecimal.ZERO);
            titulo.setValorCobrado(BigDecimal.ZERO);                

            CampoLivreSicredi clSICREDI = new CampoLivreSicredi(titulo);


            // INFORMANDO OS DADOS SOBRE O BOLETO.
            Boleto boleto = new Boleto(titulo,clSICREDI);
            
            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);                          
            
            byte[] arquivoPdf = boletoViewer.getPdfAsByteArray();
            boletoBrowser(arquivoPdf, response);
		}
		catch(Exception Banco)
		{			
			System.out.println("Erro: "+Banco);  			
		}
    }    			
    
    private static void boletoBrowser(byte [] arqboleto, HttpServletResponse response) throws IOException {     	   
        response.setContentType("application/pdf");  
        response.setHeader("Content-Disposition", "attachment; filename=boleto.pdf");  
           
        OutputStream output = response.getOutputStream();  
        output.write(arqboleto);  
          
        response.flushBuffer();
    }
    }
B

tentei gerar pelo navegador, como faço com o ireport, mas deu o erro abaixo, apareceu isso no navegador ao invez do boleto.
Alguém sabe me informar o que pode ser ?

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class br.com.cubosis.bancojavaflexblazeds.ServicoJavaBoleto2
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Unknown Source)

root cause

java.lang.NoClassDefFoundError: org/jrimum/domkee/financeiro/banco/Banco
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	java.lang.Class.getConstructor0(Unknown Source)
	java.lang.Class.newInstance0(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Unknown Source)

root cause

java.lang.ClassNotFoundException: org.jrimum.domkee.financeiro.banco.Banco
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	java.lang.Class.getConstructor0(Unknown Source)
	java.lang.Class.newInstance0(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	java.lang.Thread.run(Unknown Source)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
e no console de erros do eclipse o erro abaixo:
17/08/2011 10:19:03 org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet RelatorioBoleto as unavailable
17/08/2011 10:19:03 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Allocate exception for servlet RelatorioBoleto
java.lang.ClassNotFoundException: org.jrimum.domkee.financeiro.banco.Banco
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
xdraculax

O método que gera o boleto é um método manipulado pelo BlazeDS?
Se for, não acredito que exista uma forma de setar o tipo de resposta (content-type)…

O que fiz aqui foi: eu gero o PDF, gravo em uma pasta /reports (pasta essa “visivel” como conteúdo estático no container ), e respondo a URL para o cliente Flex.

No navegador, eu simplesmente exibo o PDF através da URL, dai o usuário pode salvar, imprimir, e fazer o que quiser com ele.

Quando você usa servlets diretamente, sem BlazeDS, ai é só gerar os bytes do PDF, e responder para o navegador, o usuário recebe isso como conteúdo para download.

B

Galera, ainda não cosnegui.. grande dificuldade ainda.

desiste de mostrar o byte array, gostaria de só criar o PDF mesmo em uma determinada pasta, como o xdraculax falou.
o que estou usando é o seguite:

package br.com.teste;

import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.jrimum.bopepo.BancosSuportados;
import org.jrimum.bopepo.Boleto;
import org.jrimum.bopepo.exemplo.CampoLivreSicredi;
import org.jrimum.bopepo.view.BoletoViewer;
import org.jrimum.domkee.comum.pessoa.endereco.CEP;
import org.jrimum.domkee.comum.pessoa.endereco.Endereco;
import org.jrimum.domkee.comum.pessoa.endereco.UnidadeFederativa;
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeCobranca;
import org.jrimum.domkee.financeiro.banco.febraban.Cedente;
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
import org.jrimum.domkee.financeiro.banco.febraban.Sacado;
import org.jrimum.domkee.financeiro.banco.febraban.SacadorAvalista;
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeTitulo;
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
import org.jrimum.domkee.financeiro.banco.febraban.Titulo.EnumAceite;

import flex.messaging.FlexContext;

public class ServicoJavaBoleto2 {		
		
	public boolean geraBoleto(String nomecedente)
	{
		try 
		{			
    		  // INFORMANDO DADOS SOBRE O CEDENTE.  
              Cedente cedente = new Cedente("PROJETO JRimum", "00.000.208/0001-00");  
    
              // INFORMANDO DADOS SOBRE O SACADO.               
              Sacado sacado = new Sacado("JavaDeveloper Pronto Para Férias", "[CPF removido]");  
    
              // 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.              
              // Informando dados sobre a conta bancária do título.  
              ContaBancaria contaBancaria = new ContaBancaria(BancosSuportados.BANCO_SICREDI.create());  
              contaBancaria.setNumeroDaConta(new NumeroDaConta(123456, "3"));  
              contaBancaria.setCarteira(new Carteira(1, TipoDeCobranca.SEM_REGISTRO));                  
              contaBancaria.setAgencia(new Agencia(1234, "2"));                  
                
              Titulo titulo = new Titulo(contaBancaria, sacado, cedente);  
              titulo.setNumeroDoDocumento("123456");  
              titulo.setNossoNumero("99345678");  
              titulo.setDigitoDoNossoNumero("0");  
              titulo.setValor(BigDecimal.valueOf(0.23));  
              titulo.setDataDoDocumento(new Date());  
              titulo.setDataDoVencimento(new Date());  
              titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);  
              titulo.setAceite(EnumAceite.A);  
              titulo.setDesconto(new BigDecimal(0.05));  
              titulo.setDeducao(BigDecimal.ZERO);  
              titulo.setMora(BigDecimal.ZERO);  
              titulo.setAcrecimo(BigDecimal.ZERO);  
              titulo.setValorCobrado(BigDecimal.ZERO);             

            CampoLivreSicredi clSICREDI = new CampoLivreSicredi(titulo);            

            // INFORMANDO OS DADOS SOBRE O BOLETO.
            Boleto boleto = new Boleto(titulo,clSICREDI);
            
            boleto.setLocalPagamento("Pagável preferencialmente no SICREED 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("Sr. Caixa, favor não receber após o vencimento.");

            // 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:
            String diretorio = FlexContext.getServletContext().getRealPath("/anexos") + System.getProperty("file.separator",".");
            File arquivoPdf = boletoViewer.getPdfAsFile(diretorio+"Boleto.pdf");                        

            return true;
		}
		catch(Exception Banco)
		{			
			System.out.println("Erro: "+Banco);
			return false;			  		
		}		
	}    			 

}
e no flex chamo assim:
<mx:RemoteObject id="ServicoJavaBoleto2" destination="ServicoJavaBoleto2" showBusyCursor="true">
		<mx:method name="geraBoleto" fault="onFault(event)"/>
</mx:RemoteObject>	


ServicoJavaBoleto2.geraBoleto("");

só que não vai, sempre cai no onFault.. e não gera nada, nem mostra erro no java.

xdraculax

Cara, não tenho certeza, mas isso:

vai imprimir apenas a referência para a exception não? Ou ele imprime o stack-trace dela?

Outra coisa é onde está o método que manipula results “normais” no seu RemoteObject no Flex?

Não faz sentido ir para o fault se você não lançar uma exception no Java (a menos que seja uma exception do tipo ClassNotFound, por exemplo).

B

o exemplo do fault, é só pra ver se estava apresentando algum erro.

Pois se eu coloco o exemplo abaixo funciona, aparece do eclipse a mensagem "teste".
Por isso que acho que deve ser algo com a geração do boleto, ou algo que estou esquecendo de instanciar.

public class ServicoJavaBoleto2 {         
           
     public boolean geraBoleto(String nomecedente)  
     {  
         try   
         {             
	     System.out.println("teste");     
             return true;  
         }  
         catch(Exception Banco)  
         {             
             System.out.println("Erro: "+Banco);  
             return false;                     
         }         
     }                  
   
 }
B

Consegui resolver.

o .JAR do projeto não estava na pasta lib do flex.
era só isso, erro de iniciante.

Agradeço a ajuda de todos.

Criado 14 de agosto de 2011
Ultima resposta 19 de ago. de 2011
Respostas 12
Participantes 4