Relatório iReport x caminho imagem

Pessoal fiz um relatório (meu 1º) no iReport e no cabeçalho dele coloquei uma imagem (logotipo) rodou blz. Adicionei o relatório na aplicação web na minha máquina (localhost) e tb rodou blz, então fui atualizar a aplicação no servidor e deu erro que não achava a imagem!!!

Nesta situação, onde o caminho da aplicação na minha máquina é diferente do caminho no servidor, como posso conciliar a imagem no relatório para que ela rode tanto local quanto no servidor sem ter que ficar mexendo toda hora no seu path ???

Valew galera.

O path da imagem pode ser resolvido atraves de uma classe… ou seja… seu relatorio pode acessar classes da sua aplicação o qual pode resolver o path da imagem, por exemplo, digamos que sua imagem esteja dentro da pasta resource/images/logo.gif Vc entao ira usar uma classe que acessa sua imagem usando o getClass().getClassLoader()

Dessa forma vc pode retornar por parametro uma string contendo o valor absoluto de onde sua imagem esta !

Outra forma é vc retornar a propria imagem… essas transicoes sao um pouco complicadas… qualquer coisa eu posto o codigo depois.

Entendi, eu crio um parametro no relatório e depois no meu servlet eu pego e seto este parametro, mas ai tenho um dúvida, após criar o parametro no relatorio (iReport) como que faço pro local da imagem receber este parametro ??

No path da imagem vc coloca $P{LOGO} ae vc cria um parametro no seu relatorio chamado LOGO do tipo java.awt.Image

Ae é so vc passar a imagem por parametro… melhor que passar o path… pois o path será resolvido no seu servlet atraves do classLoader como esta no post anterior :wink:

Olá pessoal!!!

como uso no servlet o getClass().getClassLoader() ?

Obrigado.

Outra sugestão é criar um parâmetro do tipo String com o caminho para o arquivo. Nas propriedades do objeto do logotipo, adicione new File( $P{LOGO} ).

Esse parâmetro pode ser passado via Servlet, consultando uma base de dados ou uma variável estática (pode haver diversas implementações).

OK?

[quote=Mertz]Olá pessoal!!!
como uso no servlet o getClass().getClassLoader() ?
Obrigado.[/quote]

InputStream is = getClass().getClassLoader().getResourceAsStream("bundle/resources.properties");

//ou
getClass().getClassLoader().getResource("bundle/resources.properties").getFile()

Existe diversas formar :wink: fique a vontade para usar essas ou pesquisar mais sobre o assunto

eu tentei passar o inputStream por parâmetro para a imagem , eu nao recebo mensagem de erro , o arquivo e gerado mas sem imagens , alguem tem alguma ideia de uma forma melhor pra passar imagens estáticas para um relatorio do ireport ?

obrigado !

nossa quanta complicação… eu apenos coloco assim no iReport: “imagem.jpg”

e entao coloco a imagem em qualquer lugar do meu classpath, tipo dentro de qualquer pacote, junto com as classes!

1 curtida

ronildobraga wrote:

tipo assim?

HashMap parameters = new HashMap(); parameters.put("$P{logo}",pathImagem);
eu tentei isso (tb criei um parametro no ireport chamado logo do tipo java.awt.Image) e no meu relatório aparece null…

alguém pode me ajudar?

Olá pessoal,
preciso de uma ajudinha… é que já tentei de tudo e nada funciona!
É o seguinte, meu relatório funciona local só que quando vai pro servidor não funciona, não encontra o caminho da imagem. Já tentei passando a imagem via InputStream, já passei o caminho como String, já tentei pegando o caminho com getResource() e com getRealPath(). Tem algo que achei muito estranho, no servidor o getRealPath() vem null.
Tudo funciona local, mas no servidor nada! :frowning: O servidor está em Unix e minha máquina é windows, o servidor é Weblogic na mesma versão do meu local. Será que pode ser alguma configuração no servidor? Alguém tem alguma suposição do que seja ou já passou por isso?

Help…