Ireport X Imagem[RESOLVIDO]

Galera boa tarde!
Estou tentando colocar uma imagem no meu relatório,mas nao estou conseguindo…se alguem puder me ajudar agradeço.
Segue o código:

	[code]Requisicao req = new Requisicao();
		List<ValoresDoRelatorio> valoresDoRelatorio = req.gerarValoresDoRelatorioPara(filtroPlaca, ano, mes);
						
			if (valoresDoRelatorio.size()>0) {
			
			String pathJasper = context.getRealPath("WEB-INF/report/")+ "/";
			String pathImagem = context.getRealPath("WebContent/imagens/")+ "/";

// Map<String, Image> parameters = new HashMap<String, Image>();
// ImageIcon gto = new ImageIcon(getClass().getResource("/logo.gif"));
// parameters.put(“logo”, gto.getImage());

			File logo = new File(pathImagem+"/logo.gif");  
			Map<String, File> parameters = new HashMap<String, File>();  
			parameters.put("$P{logo}", logo);
                   
			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(valoresDoRelatorio);

			JasperPrint impressao = JasperFillManager.fillReport(pathJasper+ "/report1.jasper", parameters, ds);
			
			byte[] arquivo = JasperExportManager.exportReportToPdf(impressao);

			String nomeDoArquivo = "relatorio_mes.pdf";
			response.setContentType("application/pdf");
			response.setHeader("Content-Disposition","attachment; filename=".concat(nomeDoArquivo));
			response.setContentLength(arquivo.length);
			ServletOutputStream sos = response.getOutputStream();
			sos.write(arquivo, 0, arquivo.length);
			sos.flush();
			sos.close();
			return "ok";[/code]

No iReport eu criei um parametro com o nome de logo do tipo java.io.File e a expression $P{logo}
Se alguem puder me ajudar agradeço.
Obrigada!!!

Passe a imagem para o relatório não como tipo File, mas como Image (java.awt.Image) e use o componente Imagem do iReport para receber esta imagem e então na expressão você coloca o parâmetro…

Eu tentei usar, tanto que ate deixei o código comentado…mas nao funcinou.
O caminho da minha imagem é o seguinte: /srv/WebContent/imagens/logo.gif. Como que referencio ele no meu ImageIcon?

Vc diz assim:

import javax.swing.ImageIcon;
import java.awt.Image;

Map<String, Image> parameters = new HashMap<String, Image>();  
ImageIcon gto = new ImageIcon(getClass().getResource("/logo.gif"));	
parameters.put("logo", gto.getImage());

se seu camino e esse: /srv/WebContent/imagens/logo.gif. :
deixe -o assim /imagens/logo.gif.
se nao funcionar tente passar o caminho completo para fazer um teste :

C:/.../imagens/logo.gif

vlw
abs

Tem uma maneira mais simples e fácil…

no relatório crie uma imagem e define onde vc quer que ela apareça,
só crie a imagem, nao defina nenhuma imagem para ela. vai ficar tipo um X

e depois por java envie uma String que contem o diretório onde se localiza a imagem.

volte no relatório crie um nas configurações um textField para receber o String de endereço
e na configuração da imagem adiciona no endereço o seu textField que contem o endereço;

voltando para o java envie essa String que contem o endereço por parametro para o relatório

att. Jonas

é… só que no meu caso eu passo por Image pois a imagem fica no banco como um array de byte… se você tiver o caminho da imagem é só passar o caminho para o relatório…

[quote=monike]Eu tentei usar, tanto que ate deixei o código comentado…mas nao funcinou.
O caminho da minha imagem é o seguinte: /srv/WebContent/imagens/logo.gif. Como que referencio ele no meu ImageIcon?
[/quote]

Pelo que eu vi, a monike tem um caminho da imagem…
Fica muito mais fácil para ela, fazer do jeito que mencionei…

Já no seu caso erico, eu não vi seu problema no tópico…
estava ajudando a monike, sry

Att. Jonas

rsrs…calma rapazes!!!
Eu encontrei um post e fiz igualzinhu mas esta dando o seguinte erro:net.sf.jasperreports.engine.JRException: Byte data not found at location

Esse foi o post que achei e adpatei para o meu caminho
Criei um parametro no meu relatorio chamado logo do tipo String
Depois arrastei o Objeto Image para a band que eu queria no relatorio.
na propriedade desta image eu coloquei o logo com parametro, tmb para com o tipo String

$P{logo}

Depois no meu Servlet fiz assim passando a img como parametro :
String pathImagem = context.getRealPath(“WebContent/imagens/”)+ “/”;
String img = pathImagem+/“logo.gif”);
HashMap map = new HashMap();
map.put(“logo”, img);

depois tentei direto,mas tb deu o mesmo erro no caminho…

String img = "/srv/WebContent/imagens/logo.gif";
			HashMap<String, String> parameters = new HashMap<String, String>();			
			parameters.put("logo", img);

[quote=TheKill][quote=monike]Eu tentei usar, tanto que ate deixei o código comentado…mas nao funcinou.
O caminho da minha imagem é o seguinte: /srv/WebContent/imagens/logo.gif. Como que referencio ele no meu ImageIcon?
[/quote]

Pelo que eu vi, a monike tem um caminho da imagem…
Fica muito mais fácil para ela, fazer do jeito que mencionei…

Já no seu caso erico, eu não vi seu problema no tópico…
estava ajudando a monike, sry

Att. Jonas[/quote]
não viu meu problema pq não tenho nenhum problema… só citei o jeito que eu faço sempre… e não é nada difícil…
acredito que existam mais de 15 formas de fazer isso, você mostrou 1, eu mostrei outra, outros mostrarão outras…

se fosse topico de homem nao estariam assim!!rsrs
vlw
abs

se fosse topico de homem nao estariam assim!!rsrs
vlw
abs[/quote]

hahahaha
bem normal mesmo…

Mas beleza, concordo que existem N maneiras de fazer isso,
e nao vou entrar em discussão quanto a isso…

Só citei porque achei que tambem estava com dificuldades…

Att. Jonas

[quote=monike]rsrs…calma rapazes!!!
Eu encontrei um post e fiz igualzinhu mas esta dando o seguinte erro:net.sf.jasperreports.engine.JRException: Byte data not found at location

Esse foi o post que achei e adpatei para o meu caminho
Criei um parametro no meu relatorio chamado logo do tipo String
Depois arrastei o Objeto Image para a band que eu queria no relatorio.
na propriedade desta image eu coloquei o logo com parametro, tmb para com o tipo String

$P{logo}

Depois no meu Servlet fiz assim passando a img como parametro :
String pathImagem = context.getRealPath(“WebContent/imagens/”)+ “/”;
String img = pathImagem+/“logo.gif”);
HashMap map = new HashMap();
map.put(“logo”, img);

depois tentei direto,mas tb deu o mesmo erro no caminho…

String img = "/srv/WebContent/imagens/logo.gif";
			HashMap<String, String> parameters = new HashMap<String, String>();			
			parameters.put("logo", img);

[/quote]
tente colocar o caminho inteiro da imagem… caso for windows: “C:/…”
ou se você tiver a imagem dentro da aplicação você pode passar por InputStream ao relatório também…

coloquei isso la em cima!!
e bom colocar o caminho completo para saber se ta tudo certo!!
vlw

uhahuahuauha…é essa foi boa!!! mas é ai que está eu nao quero passar o caminho local.Se eu passo o caminho local,posso fazer isso direto na imagem do ireport.Ai ela aparece.Preciso fazer desta maneira mesmo.
Como que eu faço pra passar por InputStream ao relatório esse caminho da imagem?

A nivel de teste!!!
rs
vlw

é só criar um InputStream contendo o local da imagem e passá-lo para o iReport…

InputStream is = getClass().getResourceAsStream("...");

geralmente eu passo como tipo Image mesmo, como falei antes:

Image img = new ImageIcon(getClass().getResource("/view/imagens/IMAGE.jpg")).getImage(); parametros.put("FOTO", img); ...

Fiz como me sugeriu mas quando chego nessa linha da nullpointer

Image imagem = new ImageIcon(getClass().getResource("/WebContent/imagens/logo.gif")).getImage();

CONSEGUI!!!
Muito obrigada pela atenção de vcs!!!
Ficou assim:
Eu nao estava passando o caminho do pacote,tive que tirar a imagem da pasta e jogar dentro do meu pacote.

HashMap parameters = new HashMap();			
Image logo = new ImageIcon(getClass().getResource("/br/gov/inpi/srv/relatorio/logo.gif")).getImage();
parameters.put("logo", logo);

No ireport eu criei um parametro do tipo java.awt.Image e arrastei o componente da imagem onde coloquei no campo imagem expression=$P{logo} do tipo java.awt.Image.

E isso, beleza e um bom fds!!! :slight_smile:

aee!
coloca o topico como Resolvido agora!!
vlw
abs