{"id":2715,"date":"2022-08-30T15:27:10","date_gmt":"2022-08-30T15:27:10","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/02\/08\/generating-a-pdf-report-using-jasperrunmanager-collection-of-common-programming-errors\/"},"modified":"2022-08-30T15:27:10","modified_gmt":"2022-08-30T15:27:10","slug":"generating-a-pdf-report-using-jasperrunmanager-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2022\/08\/30\/generating-a-pdf-report-using-jasperrunmanager-collection-of-common-programming-errors\/","title":{"rendered":"Generating a pdf report using JasperRunManager-Collection of common programming errors"},"content":{"rendered":"<p>I want to generate a pdf report using ejbql ,but I dont know how to do that. I have tried to do thye following but an error occure:<\/p>\n<pre><code>parameterMap.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER,    entityManager);\nparameterMap.put(\"priority\", \"3\");\ntry\n{\nJasperFillManager.fillReportToFile(\"C:\/Documents and Settings\/MyDocuments\/NetBeansProjects\/JiraMap\/src\/java\/Reports\/Test.jasper\", parameterMap);\nJasperRunManager.runReportToPdfFile(\"C:\/Documents and Settings\/MyDocuments\/NetBeansProjects\/JiraMap\/src\/java\/Reports\/Test.pdf\", parameterMap);\n}\ncatch (JRException ex)\n{\nex.printStackTrace();\n}\n<\/code><\/pre>\n<p>Tehb error is:<\/p>\n<pre><code>net.sf.jasperreports.engine.JRException: Error loading object from file : C:\\Documents and Settings\\My Documents\\NetBeansProjects\\JiraMap\\src\\java\\Reports\\Test.pdf\nat net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:101)\nat net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:93)\nat Reporting.ReportBean.main(ReportBean.java:38)\nCaused by: java.io.EOFException\n<\/code><\/pre>\n<p><strong>UPdate<\/strong><\/p>\n<p>I have use this code (I haven&#8217;t use any parameter ) but always the report is empty:<\/p>\n<pre><code>JasperReport report = JasperCompileManager.compileReport(\"C:\/Documents and Settings\/My Documents\/NetBeansProjects\/JiraMap\/src\/java\/Reports\/Test.jrxml\");\nJasperPrint print = JasperFillManager.fillReport(report,null);\nJasperExportManager.exportReportToPdfFile(print,\"C:\/Documents and Settings\/My Documents\/NetBeansProjects\/JiraMap\/src\/java\/Reports\/Test.pdf\");\n<\/code><\/pre>\n<p>My report with the Aggregate Function count(I have tried to use the alias <strong>as numebr<\/strong> but it didn&#8217;t work):<\/p>\n<pre><code>\n\n\n\n\n\n\n\n\n\n    \n\n    \n\n    \n\n\n        \n\n    \n\n\n    \n\n\n    \n        \n            \n            \n            \n        \n\n    \n\n\n    \n        \n            \n            \n              \n        \n    \n\n\n    \n\n\n    \n\n\n    \n\n\n<\/code><\/pre>\n<p>The error is :<\/p>\n<pre><code>net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : count(j)\nat    net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDat    aSource.java:123)\nat   net.sf.jasperreports.engine.data.JRJpaDataSource$PropertyReader.getValue(JRJpaDataSource.java:206)\nat  net.sf.jasperreports.engine.data.JRJpaDataSource.getFieldValue(JRJpaDataSource.java:131)\nat  net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:821)\nat net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:785)\nat net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1482)\nat net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:126)\nat net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)\nat net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:118)\nat net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:435)\nat Reporting.ReportBean.main(ReportBean.java:41)\nCaused by: java.lang.NoSuchMethodException: Unknown property 'count'+ on bean class 'class java.lang.Long'\n[EL Info]: 2011-06-29 11:05:12.606--ServerSession(27055962)--file:\/C:\/Documents and     Settings\/a497165\/My Documents\/NetBeansProjects\/JiraMap\/build\/web\/WEB-INF\/classes\/_JiraMapPU logout successful\nat   org.apache.commons.beanutils.PropertyUtilsBean.getMappedProperty(PropertyUtilsBean.java:624)\nat org.apache.commons.beanutils.PropertyUtilsBean.getMappedProperty(PropertyUtilsBean.java:570)\nat org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:758)\nat org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)\nat org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)\nat  net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)\n... 10 more\n<\/code><\/pre>\n<ol>\n<li>\n<p>This is part of the code I used for generating with JasperPrint; and sending the file back to a browser response. This using JDBC though, not EJBQL. But the JasperReports part of the code is the same.<\/p>\n<pre><code>             FileResolver fileResolver = new FileResolver() {\n                                            @Override\n                                            public File resolveFile(String fileName) {\n                                               return new File(getServletContext().getRealPath(\"\/\") + fileName);\n                                            }\n                                         };\n\n             Map parameters = new HashMap();\n             parameters.put(\"REPORT_FILE_RESOLVER\", fileResolver);\n\n             ...... \/\/ blah blah\n\n             JasperPrint jrprint = JasperFillManager.fillReport(input, parameters,  conn);\n\n             byte[] reportBytes;\n\n             jrprint.setName(\"MyFile.\" + fileFormat);\n\n             response.setContentType(\"APPLICATION\/OCTET-STREAM\");\n             String disHeader = \"Attachment;Filename=\\\"MyFile.\";\n\n             ServletOutputStream os = response.getOutputStream();\n\n                response.setHeader(\"Content-Disposition\", disHeader);\n\n                reportBytes = JasperExportManager.exportReportToPdf(jrprint);\n                os.write(reportBytes);\n<\/code><\/pre>\n<\/li>\n<li>\n<p>your problem it&#8217;s that you&#8217;re using wrong the methods of jasper each method returns an object. Try like this<\/p>\n<pre><code>\/\/your conn have's to be a empty datasource because you are using a ejb connection\nJasperPrint jasperPrint = JasperManager.fillReport(jasperReport, parameters, conn);\n\n\/\/notes that i'm using the object jasperprint\nJasperManager.printReportToPdfFile(jasperPrint,\"Name of youer File.pdf\");\n<\/code><\/pre>\n<p>i think that solved your problem<\/p>\n<p><strong>UPDATE<\/strong><\/p>\n<p>tried to compile the jrxml first and then fill the report<\/p>\n<pre><code>JasperReport report = JasperCompileManager.compileReport(\n      \"yourReport.jrxml\");\n  JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);\n<\/code><\/pre>\n<p>Also instead the use the method <code>printreporttopdffile<\/code> try like this<\/p>\n<pre><code>\/\/this method only takes two parameters\nJasperExportManager.exportReportToPdfFile(jasperPrint,\"Name of youer File.pdf\");\n<\/code><\/pre>\n<p><strong>UPDATE 2<\/strong> Assuming that the class that map of the your data table it&#8217;s called <code>foo<\/code> and have a attribute called <code>j<\/code> the select it&#8217;s like this<\/p>\n<p><code>SELECT COUNT(f.j) from foo as f<\/code><\/p>\n<\/li>\n<\/ol>\n<p id=\"rop\"><small>Originally posted 2014-02-08 03:30:25. <\/small><\/p>","protected":false},"excerpt":{"rendered":"<p>I want to generate a pdf report using ejbql ,but I dont know how to do that. I have tried to do thye following but an error occure: parameterMap.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, entityManager); parameterMap.put(&#8220;priority&#8221;, &#8220;3&#8221;); try { JasperFillManager.fillReportToFile(&#8220;C:\/Documents and Settings\/MyDocuments\/NetBeansProjects\/JiraMap\/src\/java\/Reports\/Test.jasper&#8221;, parameterMap); JasperRunManager.runReportToPdfFile(&#8220;C:\/Documents and Settings\/MyDocuments\/NetBeansProjects\/JiraMap\/src\/java\/Reports\/Test.pdf&#8221;, parameterMap); } catch (JRException ex) { ex.printStackTrace(); } Tehb error is: net.sf.jasperreports.engine.JRException: Error loading [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2715","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=2715"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/2715\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=2715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=2715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=2715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}