Arquivo da categoria: iReports

Como pegar a conexão usando JPA ou Hibernate

Eu passei por um problema que era usar a mesma conexão que eu usava no projeto para usar no meu relatório com o ireports.
Para resolver esse problema usei esse código.

public class ReportsRepository {
 
    private EntityManager entityManager;
 
    public ReportsRepository(EntityManager entityManager) {
        this.entityManager = entityManager;
    }
 
    public Connection getConnection() {
        try {
            EntityManagerImpl factory = (EntityManagerImpl) entityManager;
            SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) factory.getSession().getSessionFactory();
            return sessionFactoryImpl.getConnectionProvider().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

Como passar imagens para um relatório com iReports

É bem simples basta passar um “InputStream”, então basta no próprio ireports colocar na perspectiva de d XML e então mudar os parameter das imagens com:

<parameter name="Logo" class="java.io.InputStream" isForPrompting="false"/>

Agora se não tiver o class na tag “imageExpression” coloque:

<image>  
    <reportElement x="2" y="23" width="92" height="73"/>  
    <imageExpression class="java.io.InputStream"><![CDATA[$P{Logo}]]></imageExpression>  
</image>

Agora você pode passar como parametro a imagem:

HashMap<String, Object> params = new HashMap<String, Object>();  
params.put("Logo", ClassLoader.getSystemResourceAsStream("C:/autonfes/nfe.jpeg"));            
JasperPrint rel = JasperFillManager.fillReport(nfe.getJasper(), params, xmlDataSource);