Relatório iReport x caminho imagem

10 respostas
M

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.

10 Respostas

R

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.

M

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 ??

R

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:

M

Olá pessoal!!!

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

Obrigado.

Z

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?

R

Mertz:
Olá pessoal!!!
como uso no servlet o getClass().getClassLoader() ?
Obrigado.

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

G

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 !

F

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!

C

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?

C

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…

Criado 11 de agosto de 2006
Ultima resposta 15 de set. de 2009
Respostas 10
Participantes 8