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
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? 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.
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.
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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With