Boleto bancário para download [RESOLVIDO]

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.

[code]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", "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 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();
        }
}[/code]

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”;

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.

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");

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

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.

[code]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();
[/code]

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

[code].
.
.
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();
.
.
.[/code]

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.

Pra mim testar, ficaria assim?

[code]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", "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 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();
}
}[/code]

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 ?

[code]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.[/code]

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)

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.

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:

[code]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", "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.              
          // 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;			  		
	}		
}    			 

}[/code]

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.

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).

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.

[code]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;                     
     }         
 }                  

} [/code]

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.