Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Blank PDF even with the simplest Jasperreport jrxml

Tags:

i have a EJB site with glassfish 3.1 + JSF for jasperreport 4.0.1. the site has no problem on streaming pdf, but it products blank PDF while printing PDF with runReportToPdfStream, below is the code snippet:

EJB

public class BookEJB {       public void printReport() throws ClassNotFoundException, IOException, JRException {         Map parameterMap = new HashMap();          FacesContext ctx = FacesContext.getCurrentInstance();         HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();         InputStream reportStream = ctx.getExternalContext().getResourceAsStream("/reports/test.jasper");          ServletOutputStream servletOutputStream = response.getOutputStream();         servletOutputStream.flush();          response.setContentType("application/pdf");         JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameterMap);          servletOutputStream.flush();         servletOutputStream.close();         ctx.responseComplete(); }} 

test.jrxml - a simple report without SQL connection

<?xml version="1.0" encoding="UTF-8"?> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="test" pageWidth="800" pageHeight="1200" columnWidth="555" leftMargin="25" rightMargin="25" topMargin="30" bottomMargin="30">     <property name="ireport.zoom" value="1.0"/>     <property name="ireport.x" value="0"/>     <property name="ireport.y" value="0"/>     <queryString>         <![CDATA[]]>     </queryString>     <pageHeader>         <band height="100">             <staticText>                 <reportElement x="0" y="0" width="285" height="36"/>                 <textElement>                     <font size="24" isBold="true"/>                 </textElement>                 <text><![CDATA[Report of Testing]]></text>             </staticText>            </band>     </pageHeader>     <detail>         <band height="200">             <staticText>                 <reportElement x="0" y="0" width="374" height="48"/>                 <textElement>                     <font size="18"/>                 </textElement>                 <text><![CDATA[If you don't see this, it didn't work blah blah blah.... ]]></text>             </staticText>         </band>     </detail>     <pageFooter>         <band height="100"/>     </pageFooter> </jasperReport> 

no error log in glassfish when generating this report on JSF, but only blank PDF has been shown. Please help, let me know if you need further info for the analysis.

Steven

like image 880
Mythox Avatar asked Mar 10 '11 10:03

Mythox


People also ask

What is the difference between Jasper and Jrxml?

jrxml is a human readable XML file that contains the report template i.e. report structure and its formatting rules. . jasper is the compiled report template i.e. compiled . jrxml file.

What is a Jrxml file?

What is a JRXML file? A JRXML file is created by JasperReports and contains design definition in popular XML file format. It stores all the design elements such as report layout, text fields, images, charts, parameters, and variables.

How do I create a Jrxml file?

After succesful connection, save it. One more thing the class or package should be in classpath of ireport. Go to report query section, select javabean data source tab and type the class name and click read attributes. Your are done.


2 Answers

After all, JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameterMap, new JREmptyDataSource()); solved the problem.

Quote from Sanda of Jasperreport:

By default, when no datasource info is present in a report, JR generates no pages. Another option (which can be set in the report's whenNoDataType attribute) would be to print all report sections, excepting the <detail>.

This report contains a detail section, but only with some static data. To ensure this section will be printed too, the simplest way is to provide an empty data source, containing a single empty record.

Source: https://community.jaspersoft.com/questions/537650/blank-pdf-even-simplest-jrxml

like image 116
Mythox Avatar answered Oct 05 '22 05:10

Mythox


When you are not using the details band, just static values, you can do the following:

Right click in the iReport project, then select 'Properties', search for the property 'When no Data', and select 'All Sections, No Detail'

It works for me, using iReport 4.0

like image 26
Evandro Brunassi Avatar answered Oct 05 '22 07:10

Evandro Brunassi