Arquivo da categoria: JasperReports

Java – Font ‘Arial’ is not available to the JVM

sudo apt-get update
sudo apt-get install ttf-mscorefonts-installer

http://stackoverflow.com/questions/3811908/font-is-not-available-to-the-jvm-with-jasper-reports

https://developer.jboss.org/wiki/JBossAS713ProblemasComFontesJasperReportsNoLinux

Passando imagem como parametro no JasperReports

Passando a Imagem em vez do InputStream. Primeiro é preciso carregar a imagem e defini-lo no mapa de parâmetros:

BufferedImage image = ImageIO.read(getClass().getResource("/images/IMAGE.png"));
parameters.put("logo", image );

Agora mude no xml do relatório, adicionando a “imageExpression”:

<image>
  <reportElement x="324" y="16" width="154" height="38"/>
  <imageExpression><![CDATA[$P{logo}]]></imageExpression>
</image>

Referência: http://stackoverflow.com/questions/13598655/how-to-add-image-as-parameter-from-projects-classpath-in-jasper-reports

Geração de relatório com JasperReports em Api Rest

Basta colocar no seu método esse bloco de código.

Map<String, Object> params = new HashMap<>();
JasperReport jasperReport = JasperCompileManager.compileReport(getClass().getResourceAsStream(getPathReport()));
JRBeanCollectionDataSource colecaoDeDados = new JRBeanCollectionDataSource(dao.findeAll());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, colecaoDeDados);
 
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "inline; filename=consulta.xls");
 
final OutputStream outStream = response.getOutputStream();
JRXlsExporter exporter = new JRXlsExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outStream));
exporter.exportReport();

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;
    }
}