JasperReports dynamic printing

1

I'm trying to make an impression with JasperReports , when compiling the report I get the following error:

  

Exception in thread "main"
  net.sf.jasperreports.engine.design.JRValidationException: Report
  design not valid:
     1. The columns and the margins do not fit the page width.
     2. The background section and the margins do not fit the page height.
     3. The title section, the page and column headers and the margins do not fit the page height.
     4. The page and column headers and footers and the margins do not fit the page height.
     5. The page and column headers and footers and the margins do not fit the last page height.
     6. The summary section and the margins do not fit the page height.
     7. The detail section, the page and column headers and the margins do not fit the page height.
     8. The noData section and the margins do not fit the page height. at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign (JRAbstractCompiler.java:271)     at   net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport (JRAbstractCompiler.java:153)     at   net.sf.jasperreports.engine.JasperCompileManager.compile (JasperCompileManager.java:241)     at   net.sf.jasperreports.engine.JasperCompileManager.compileReport (JasperCompileManager.java:501)     at testprinting.Printing.Printing (Impression.java:49)

Below is the test code:

JasperDesign report = new JasperDesign();
report.setName("teste");
report.setPageWidth(90);
report.setPageHeight(45);

JRDesignBand band = new JRDesignBand();
band.setHeight(45);

JRDesignStaticText text = new JRDesignStaticText();
text.setText("Primeira impressão");
text.setHeight(20);
text.setWidth(60);
text.setX(1);
text.setY(1);
band.addElement(text);

((JRDesignSection)report.getDetailSection()).addBand(band);

JasperReport relatorio = JasperCompileManager.compileReport(report); //Aqui ocorre o erro

JasperPrint print = JasperFillManager.fillReport(relatorio, new HashMap<>());
JasperViewer jrviewer = new JasperViewer(print, false);
jrviewer.setVisible(true);
    
asked by anonymous 04.04.2018 / 19:42

1 answer

1

I found the problem, it seems that JasperReports gets lost when it does not have the margins set, so I set the margins, another problem is that it also can not generate the report without a DataSource , to solve this problem I spent one JREmptyDataSource , the code looks like this:

JasperDesign report = new JasperDesign();
report.setName("teste");
report.setPageWidth(90);
report.setPageHeight(45);
report.setBottomMargin(0);
report.setTopMargin(0);
report.setLeftMargin(0);
report.setRightMargin(0);
report.setColumnWidth(89);

JRDesignBand band = new JRDesignBand();
band.setHeight(45);

JRDesignStaticText text = new JRDesignStaticText();
text.setText("Primeira impressão");
text.setHeight(20);
text.setWidth(60);
text.setX(1);
text.setY(1);
band.addElement(text);

((JRDesignSection)report.getDetailSection()).addBand(band);

JasperReport relatorio = JasperCompileManager.compileReport(report);

JasperPrint print = JasperFillManager.fillReport(relatorio, new HashMap<>(), new JREmptyDataSource(1));
print.setPageHeight(report.getPageHeight());
print.setPageWidth(report.getPageWidth());
print.setBottomMargin(report.getBottomMargin());
print.setTopMargin(report.getTopMargin());
print.setLeftMargin(report.getLeftMargin());
print.setRightMargin(report.getRightMargin());

JasperViewer jrviewer = new JasperViewer(print, false);
jrviewer.setVisible(true);
    
05.04.2018 / 21:10