Problema ao passar imagem como parâmetro para o Jasper[RESOLVIDO]
12 respostas
J
jcmaster
Boa tarde pessoal.
Estou tentando passar o logo da empresa para o relatório(estou gerando PDF pelo jasper “iReport 3.7.0”).
Entretanto, a imagem insiste em não aparecer e não sei mais o que fazer.
Olá…
Bem, primeiro: na raiz do seu S.O. existe um diretórios chamado imagens com a imagem FigLogoCliente.png lá dentro?
Quando quizer pegar a imagem por um File, deve colocar o nome completo, como: C:\diretorioDoPrograma\imagens\FigLogoCliente.png.
Mais um detalhe: Como o tipo do parametro logo já é File, não é necessário instânciar um novo objeto do tipo File.
Acredito que se fizer assim:
… tendo declarado o logo com um tipo File nos seus parametros, já funciona.
[]'s
JL
J
jcmaster
Boa tarde Mero_Aprendiz.
Então, eu alterei o parâmetro no iReport (não estou mais instanciando um File) e ainda assim, não funcionou.
Acredito que o problema não é o caminho.
Existe alguma restrição a inserir imagem na Band Title?
Realmente, tá dificil rs
Obrigado pela ajuda.
Mero_Aprendiz
Só para tirar a duvida, vamos ver se esse File realmente aponta para um arquivo. Faça assim:
...
File logo = new File("/imagens/FigLogoCliente.png");
System.out.println(logo.isFile());
Map parameters = new HashMap();
parameters.put("logo", logo);
...
Se o retorno for true, então realmente aponta para o arquivo, mas se for false então reveja o caminho que você passou como referência.
[]'s
JL
Scoobydoo
Não é restrição de imagem pois o padrão de Reports é com imagens PNG
Só que note que ele está passando a imagem como um parametro provavelmente OBJECT. e você tem que transformar para IMG.
Da uma olhada no report o tipo de parametro que voce esta passando e qual o parametro desejado…
pode ser incompatibilidade de tipos;
J
jcmaster
Mero_Aprendiz
Fiz o teste que vc sugeriu e o resultado foi true, entretanto, a imagem continua não aparecendo.
Scoobydoo
O parâmetro que eu estou recebendo no iReport é do tipo File (ja tentei Image tb sem sucesso).
Tá ficando complexo isso rs…
Mero_Aprendiz
Estive observando atentamente o seu código e vi que você instancia um HashMap, adiciona o valor logo nele, mas não passa o mapa como parametro no construtor do JRBeanCollectionDataSource. Sendo assim não está passando o File para o relatório.
[]'s
JL
J
jcmaster
Muto obrigado Mero_Aprendiz, realmente, eu não estava passando o parameters.
Agora funcionou perfeitamente.
Obrigado pela ajuda de todos
slywitch
Conexao.setSQL(SQL);JRResultSetDataSourcejrRS=newJRResultSetDataSource(Conexao.Consultar());InputStreamis=getClass().getResourceAsStream("/reports/motorista.jasper");//HashMap map = new HashMap();Mapparameters=newHashMap();//File logo = new File("/images/Linux_Logo.png");//File logo = new File("D:/Java/Sistemas/Sistema de Frota/Source/Sistema de Frota/src/images/Linux_Logo.png");//System.out.println(logo.isFile());//InputStream logo = getClass().getResourceAsStream("/images/Linux_Logo.png");//InputStream logo = getClass().getResourceAsStream("D:/Java/Sistemas/Sistema de Frota/Source/Sistema de Frota/src/images/Linux_Logo.png");parameters.put("logo",logo);JasperPrintprint=JasperFillManager.fillReport(is,parameters,jrRS);JasperViewerviewer=newJasperViewer(print,false);viewer.setDefaultCloseOperation(DISPOSE_ON_CLOSE);viewer.setVisible(true);
Desculpe a minha ignorância, ( :oops: ) mas ainda não estou conseguindo fazer isso, gostaria de saber onde estou errando, alguem poderia dar esta ajuda? obrigado!
J
jcmaster
Estou passando um objeto do tipo File.
// Passagem do logotipo por parâmetroServletContextservletContext=(ServletContext)getContext().getExternalContext().getContext();Stringpath=servletContext.getRealPath("/imagens/BrasaoCubatao.jpg");Filebrasao=newFile(path);parameters.put("brasao",brasao);
No relatório, criei um parameter chamado brasao que recebe um java.lang.Object.
Depois, inseri um image na posição que eu queria o brasão e associei essa parameter ao image no image express e no expression class do image, converti para java.io.File.