Caminho de uma imagem no relatório

390 views
Skip to first unread message

Matuzalem Guimarães

unread,
Nov 19, 2018, 11:21:48 PM11/19/18
to JasperReports / iReport Brasil
Pessoal, bom dia.

Alguém teria um exemplo, que esteja funcionando, de um relatório no ireport 5.6 com alguma imagem (tipo logo de uma empresa) ?
Eu coloquei uma imagem no meu relatório, mas quando mudo de PC a imagem não é carregada por causa do path absoluto. Já tentei deixar somente o nome da imagem que também está na mesma pasta que o relatório (logo.jpg), mas ele não a encontra. Minha aplicação está feita em Java SE.  Não estou passando imagem como parâmetro, pesquisei vários exemplos, mas nenhum funcionou pra mim. 
Existe alguma outra forma de passar o caminha da imagem no relatório?
Desde já agradeço pela atenção.

Marlysson Silva

unread,
Nov 20, 2018, 8:11:39 AM11/20/18
to jasperreports-...@googlegroups.com
A passagem da imagem deve ser passada como parâmetro com o path absoluto independente do pc.. geralmente usando o getRealPath() passando a raiz do projeto.

E no ireport utilizar ou o caminho como String ou InputStream ( dependendo do que você passar para lá.. )

Desenvolvedor Frontend com um pé no Backend , e vice-versa. 
Github: github.com/Marlysson

Mailtrack Sender notified by
Mailtrack 11/20/18, 8:34:11 AM

--
Você recebeu essa mensagem porque está inscrito no grupo "JasperReports / iReport Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-irepor...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Matuzalém Guimarães

unread,
Nov 20, 2018, 6:27:45 PM11/20/18
to jasperreports-...@googlegroups.com
Olá, muito obrigado.

Estou usando esse caminho no meu código Java:
//A imagem está em um pacote chamado "rela" juntamente com o relatório
HashMap filtro = new HashMap();
filtro.clear();
Image logo = new ImageIcon(getClass().getResource("/rela/logo.jpg")).getImage();
filtro.put("logo", logo);
String Endereco = "/rela/RelaAniversariantesPorData.jasper";
InputStream Caminho = getClass().getResourceAsStream(Endereco);
JasperPrint jp = JasperFillManager.fillReport(Caminho, filtro, conexao);
JasperViewer jv = new JasperViewer(jp, false);

No Relatório eu tenho um parâmetro do tipo Image e um componente do tipo imagem recebendo esse mesmo parâmetro.
Mas não funciona.

Você tem algum outro exemplo que esteja funcionando ou pode dar uma luz?

Agradeço.

--
Matuzalém


Marlysson Silva

unread,
Nov 20, 2018, 6:49:32 PM11/20/18
to jasperreports-...@googlegroups.com
Você poderia testar o seguinte:

Para capturar a imagem da raiz do projeto:

String enderecoImagem = getClass().getResource("/rela/logo.jpg").getAbsolutePath();

No relatório altere o valor do componente imagem para String e continue utilizando o valor do parâmetro atual;

É para ser capturado o caminho da imagem e jogado no valor do componente imagem.

Teste e dê um retorno para ver se funcionou.

Desenvolvedor Frontend com um pé no Backend , e vice-versa. 
Github: github.com/Marlysson

Mailtrack Sender notified by
Mailtrack 11/20/18, 9:47:19 PM

Denis Benjamim - GMail

unread,
Nov 21, 2018, 6:42:00 AM11/21/18
to jasperreports-...@googlegroups.com

Ola Bom dia!


meu amigo por acaso sua imagem esta dentro de um Jar no meu caso eu compactei todo o meu projeto em um unico jar  ?  Se sim voce precisa pegar de dentro da Stream desta forma

PATH = getClass().getClassLoader().getResourceAsStream("br/com/blogspot/denisbenjamim/iReport/Imagens/logotpopaco.png")

Como pode ver em verde é o caminho absoluto em verde dentro do meu classpath forma eu consigo pegar a minha imagem dentro do meu jar em tempo de execução sabendo que o diretorio raiz br esta dentro da pasta SRC


Livre de vírus. www.avast.com.

Matuzalém Guimarães

unread,
Nov 22, 2018, 8:09:02 PM11/22/18
to jasperreports-...@googlegroups.com
A imagem também está na mesma pasta que o relatório (logo.jpg), mas ele não a encontra.
O Engraçado é que eu olhei vários exemplos no Internet e nenhum funcionou. Ví tb alguns exemplos no próprio iReport e nele estão imagens que eles colocaram dentro do diretório do relatório, bastando informar o nome da imagem sem caminho nenhum e nem assim funcionou. Incrível.
Alguém tem algum exemplo real e que esteja funcionando?
Obrigado pela  atenção de vocês e pela paciência.
Abraços!
--
Matuzalém Guimarães Leal


Denis Benjamim - GMail

unread,
Nov 23, 2018, 8:15:34 AM11/23/18
to jasperreports-...@googlegroups.com

Poderia printar para nos a pasta onde esta o seu jar compilado e a pasta onde esta sua imagem com o caminho  de ambos ??

Alem disso no JRXML tem o local que esta pontado eu poderia mostrar meu exemplo conforme abaixo.

Nesse Print onde esta meu jar compilado com tudo dentro dele por isso ele tem 32 MB




Dentro do meu jar usei o 7zip para navegar dentro dele tenho essa estrutura




Seguindo ate a pasta dentro do jar onde esta as minhas imagens.

E aqui o diretorio onde fica meus  relatorios diferente das imagens

Esse é o trecho dentro do JRXML

Matuzalém Guimarães

unread,
Nov 23, 2018, 9:24:41 AM11/23/18
to jasperreports-...@googlegroups.com
Olá, obrigado a todos pelas respostas.

O Comando abaixo não foi reconhecido pelo meu sistema:

String enderecoImagem = getClass().getResource("/rela/logo.jpg").getAbsolutePath();

--
Matuzalém Guimarães Leal


Denis Benjamim - GMail

unread,
Nov 23, 2018, 11:11:29 AM11/23/18
to jasperreports-...@googlegroups.com

Varias pessoas responderam a lista nao recebeu as outras ideias ?




Avast logo

Este email foi escaneado pelo Avast antivírus.
www.avast.com


Matuzalém Guimarães

unread,
Nov 24, 2018, 7:54:59 PM11/24/18
to jasperreports-...@googlegroups.com
Ola, Denis, obrigado pela reposta.

Segue meus prints.
Abaixo o meu executável jar com a pasta lib.
Compilado.png

Abaixo o caminho dos relatórios que está dentro de um pacote na aplicação. A Imagem e está dentro da mesma
pasta dos relatórios. E quando ele é compilado eu creio que deveria estar colocando as imagens dentro do projeto.
Mas só funciona localmente (no mesmo PC), se eu troco de máquina a imagem não é localizada.

caminhoRelatorio.png
--
Matuzalém Guimarães Leal



Matuzalém Guimarães

unread,
Nov 24, 2018, 8:01:51 PM11/24/18
to jasperreports-...@googlegroups.com
Não, por enquanto não.
--
Matuzalém Guimarães Leal



Matuzalém Guimarães

unread,
Nov 24, 2018, 11:16:38 PM11/24/18
to jasperreports-...@googlegroups.com
Gente, boa noite.

Eu tentei até  mesmo pegar a imagem assim, mas só funciona no mesmo pc. Em outro PC a imagem não é carregada.
HashMap filtro = new HashMap();
 String diretorio = "/rela/logo.jpg";
                try {
                    URL resource = getClass().getResource(diretorio);
                    File file = new File(resource.toURI());
                    ImageIcon logo;
                    logo =  new ImageIcon(getClass().getResource("/rela/logo.jpg").getFile());
                    filtro.put("logo", logo);

                } catch (URISyntaxException ex) {
                    JOptionPane.showMessageDialog(null, ex);
                }

String Endereco = "/rela/TesteComImagem.jasper";

                InputStream Caminho = getClass().getResourceAsStream(Endereco);
                JasperPrint jp = JasperFillManager.fillReport(Caminho, filtro, conexao);
--
Matuzalém Guimarães Leal


Jivago Silva

unread,
Nov 25, 2018, 8:13:50 AM11/25/18
to JasperReports / iReport Brasil
Se tiver usando JSF:

ServletContext context = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
        String url = context.getRealPath("/resources/imagens/nologo.png");
        Path path = Paths.get(url);
        byte[] imagemPadrao = Files.readAllBytes(path);

Matuzalém Guimarães

unread,
Nov 25, 2018, 2:18:02 PM11/25/18
to jasperreports-...@googlegroups.com
Obrigado, Jivago.
Estou usando Java SE.
--
Matuzalém Guimarães Leal

+55 75 9 8822-6973 |



--

Matuzalém Guimarães

unread,
Nov 25, 2018, 4:04:20 PM11/25/18
to jasperreports-...@googlegroups.com

Olá, caros, boa tarde!

Tentei de várias formas e procurei inúmeros exemplos, mas não consigo usar uma imagem em um relatório usando o iReport em outro pc diferente do qual o sistema está sendo feito.

Minha estrutura:

1. No Relatório iReport: Tenho um parâmetro definido como InputStream chamado "logo". E uma imagem recebendo no Image Expression o paramtro: $P{logo}, no tipo de expression class está definido como java.io.inputStream. A imagem que quer carregar no formulário chama-se: logo.jpg e está na mesma pasta do relatório: ./src/rela/logo.jpg.

2. Na minha classe Java o trecho do código:

HashMap<String, Object> filtro = new HashMap<String, Object>();

filtro.put("mesNascimento", mes);

String fileName = "logo.png";

InputStream imgPath = new FileInputStream("./src/rela/"+fileName);

filtro.put("logo", imgPath);

String Endereco = "/rela/TesteComImagem.jasper";

InputStream Caminho = getClass().getResourceAsStream(Endereco);

JasperPrint jp = JasperFillManager.fillReport(Caminho, filtro, conexao);

 

Esse é um dos exemplos que testei. Esse funciona na máquina que estou programando, mas o executável Java rodando em outro PC não localiza a imagem logo.jpg.

Alguém pode me dar um  Help por gentileza?

Abraço e muito obrigado!

--
Matuzalém Guimarães Leal




Em dom, 25 de nov de 2018 às 10:13, Jivago Silva <zhi...@gmail.com> escreveu:
--

Denis Benjamim - GMail

unread,
Nov 26, 2018, 7:52:27 AM11/26/18
to jasperreports-...@googlegroups.com

Meu Caro Bom dia!


Ja pensou por a pasta rela  no mesmo diretorio do seu jar, assim como a imagem logo.jpg dentro da pasta rela ?? por exemplo vi que quando compila ele fica dentro dist jogue uma copia da pasta rela com a imagem dentro deste diretorio depois copie e cole em outro pc tudo dentro deste diretorio e verifique.

Eu acredito que voce nao esta colocando a imagem dentro do seu jar se nao teria de usar a classe que mostrei getResouceStream, então pega seu jar e a pasta repo com a imagem e abre em outro pc lembrando que o jar e a pasta com a foto tem de estar dentro do mesmo diretorio do jar.

Matuzalém Guimarães

unread,
Nov 26, 2018, 9:39:15 AM11/26/18
to jasperreports-...@googlegroups.com
Bom dia, Denis.
Fiz isso e também não funcionou.
Fiz com o getResouceStream,também não funcionou e testei de outra forma, mas sem sucesso.
Não sei, mas nem o que testar. Já ví na documentação do jasper pra ver se tem algo errado, mas não está.

--
Matuzalém Guimarães Leal


Giovanni Ardenghe

unread,
Nov 26, 2018, 11:00:29 AM11/26/18
to jasperreports-...@googlegroups.com
Boa tarde, ve se te ajuda...

No meu JRDataSource está assim:

if (jrf.getName().equals("logo")) {
            URL url = this.getClass().getResource("/Imagens/nomeDaImagem.png");
            String caminho = url.toString();
            System.out.println("URL: " + caminho);
            return caminho;
        }

Segue imagem em anexo.
java.png

Denis Benjamim - GMail

unread,
Nov 26, 2018, 11:25:01 AM11/26/18
to jasperreports-...@googlegroups.com

Meu amigo existe algo errado é nao é no jasper a unica coisa que posso fazer por vc agora e pedir que envie o jar compilado para que possamos olhar dentro dele ou nos permita olhar por acesso remoto via anydesk de preferencia, por com certeza o erro que esta acontecendo com vc é algo bobo.

Jivago Silva

unread,
Nov 26, 2018, 7:02:33 PM11/26/18
to JasperReports / iReport Brasil
Vc já viu os logs?
As mensagens de erro do jasper quando gera o relatório


Em terça-feira, 20 de novembro de 2018 01:21:48 UTC-3, Matuzalem Guimarães escreveu:

Matuzalem Guimarães

unread,
Nov 26, 2018, 9:30:24 PM11/26/18
to jasperreports-...@googlegroups.com
Jivago, 
Foi exatamente o que ajudou a resolver.  Tinha feito isso mais cedo e descobrir que o erro se dava por falta de uma fonte que usei no relatório que não tinha no outro pc.  Mas só deu certo quando rodei a aplicação pelo console do cmd do Windows. Aí deu pra ver no erro gerado. 
Isso foi resolvido, agora estou com vários problemas com subrelatorios que não são encontrados no caminho, mesmo estando lá.  

Obrigado pela atenção. 

Enviado do meu iPhone
--

Matuzalem Guimarães

unread,
Nov 26, 2018, 9:35:55 PM11/26/18
to jasperreports-...@googlegroups.com
Pois é meu amigo, pior que era bobo mesmo.  Acho que todos exemplos estava funcionais. O problema era uma fonte que usei no relatório que não tinha no outro pc. Mas ele não mostrava esse erro por não ter gerado uma exceção para isso. Fica como experiência. 
Agora vários subrelatorios que funcionam no pc que foram criados não são localizado no outro pc. Mas os relatórios que não dependem de subrelatorios estão funcionado e carregando a imagem normalmente. 
Vi que o iReport recomenda que passemos o caminho da imagem via parâmetro e adicionemos a imagem concatenando dessa forma: $P{parametro}+”imagem.jpg”. 
O parâmetro deve ser string e o image deve ser do tipo imagem também com o parâmetro que falei.  
Grato pela atenção


Enviado do meu iPhone

Em 26 de nov de 2018, à(s) 21:02, Jivago Silva <zhi...@gmail.com> escreveu:

--

Denis Benjamim - GMail

unread,
Nov 27, 2018, 6:19:08 AM11/27/18
to jasperreports-...@googlegroups.com

Bom dia!


problema de caminho provavelmente verifica o caminho relativo no pc de origem deve ta absoluto

Matuzalém Guimarães

unread,
Nov 27, 2018, 2:39:25 PM11/27/18
to jasperreports-...@googlegroups.com
Meus caros, boa tarde.
Quando eu chamo um relatório no pc onde ele foi construído ele consegue chamar todos os sub relatórios, mas ao mudar de local ele não encontra os sub relatórios mesmo todos estando no caminho correto.

--
Matuzalém Guimarães Leal


Marlysson Silva

unread,
Nov 27, 2018, 3:57:41 PM11/27/18
to jasperreports-...@googlegroups.com
Tive esse erro uma vez e a causa foi que o caminho eu definia somente no ireport, sendo que o correto seria passar por parâmetro o caminho dos subs e na caixa de diálogo que aponta pro subrelatório fazia a junção:

$P{CAMINHO_SUBRELATORIOS} + File.separator + "nome_do_subrelatorio.jrxml"


Desenvolvedor Frontend com um pé no Backend , e vice-versa. 
Github: github.com/Marlysson

Mailtrack Sender notified by
Mailtrack 11/27/18, 6:56:13 PM

Denis Benjamim - GMail

unread,
Nov 27, 2018, 4:03:18 PM11/27/18
to jasperreports-...@googlegroups.com

Como ja dissemos, isso acontece por que ta sentando o caminho absoluto e nao pegando o relativo de acordo com o pc em questão eu sinceramente desisto de ajudar, na moral.

Matuzalém Guimarães

unread,
Nov 27, 2018, 4:58:22 PM11/27/18
to jasperreports-...@googlegroups.com

Caros Denis, boa noite.

Obrigado pela sua ajuda e boa vontade. Que vc receba da vida em dobro sua paciência e boa vontade em ajudar!
Não estou passando o caminho absoluto, coisa que é fácil de ser verificada. O caminho que estou usando no relatório é um caminho relativo, somente a pasta onde se encontram os relatórios.
Se não quiser ou não puder ajudar não tem problema, agradeço o que já fez até aqui.
Abraço e fique em paz.

--
Matuzalém Guimarães Leal



Matuzalém Guimarães

unread,
Nov 27, 2018, 4:59:57 PM11/27/18
to jasperreports-...@googlegroups.com
Obrigado Marlysson,

Vou testar essa possibilidade.
Obrigado pela gentileza.
--
Matuzalém Guimarães Leal


Marlysson Silva

unread,
Nov 27, 2018, 5:22:07 PM11/27/18
to jasperreports-...@googlegroups.com

Matuzalém Guimarães falo com relação no ireport mesmo.


Por exemplo: No componente subreport na aba Subreport em propriedades do componente.

Mostra um print de como está o valor dele nessa aba, por gentileza.
Desenvolvedor Frontend com um pé no Backend , e vice-versa. 
Github: github.com/Marlysson

Denis Benjamim

unread,
Nov 27, 2018, 7:39:14 PM11/27/18
to jasperreports-...@googlegroups.com
Até já me ofereci em te ajudar por acesso remoto via anydesk de forma q poderia melhor ver a situação do seu projeto mas acho que a minha ideia foi mal vista, e sobre o e-mail de mais cedo desculpe eu tava de cabeça cheia louco para ir para casa foi mal mano. 
Reply all
Reply to author
Forward
0 new messages