{"id":4329,"date":"2018-05-17T11:12:23","date_gmt":"2018-05-17T05:42:23","guid":{"rendered":"https:\/\/www.innovationm.com\/blog\/?p=4329"},"modified":"2023-01-20T18:55:44","modified_gmt":"2023-01-20T13:25:44","slug":"jasper-reports-open-source-reporting-tool","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/","title":{"rendered":"Jasper Reports &#8211; Open Source Reporting Tool"},"content":{"rendered":"<p>JasperReports is an open source reporting engine. It provides ability to deliver rich content onto to the printer, the screen,\u00a0 or into various formats such as\u00a0 PDF, HTML, XLS, RTF, ODT, CSV, TXT and XML files. It is a Java library and can be used in a variety of Java-enabled applications to generate dynamic content. Its main purpose is to help create page-oriented, ready-to-print documents in a simple and flexible manner. JasperReports can also be used to provide reporting capabilities in our applications.<\/p>\n<p><span style=\"font-weight: 400;\"> As it is not a standalone tool, it cannot be installed on its own. Instead, it is embedded into Java applications by including its library in the application&#8217;s CLASSPATH.<\/span><\/p>\n<p><strong>Features of JasperReports :<\/strong><\/p>\n<ul>\n<li><span style=\"font-size: 1rem;\">Flexible report layout.<\/span><\/li>\n<li>Data can be presented either textually or graphically.<\/li>\n<li>Developers can supply data in multiple ways.<\/li>\n<li>Multiple data sources can be used to transfer data.<\/li>\n<li>Watermarks can also be applied.<\/li>\n<li>Sub reports can also be generated.<\/li>\n<li>Various formats of reports can be exported.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Maven Dependency<\/strong> :<\/p>\n<pre class=\"lang:default decode:true\">&lt;dependency&gt; \u00a0 \u00a0\r\n  &lt;groupId&gt;net.sf.jasperreports&lt;\/groupId&gt;\r\n \u00a0&lt;artifactId&gt;jasperreports&lt;\/artifactId&gt; \u00a0 \u00a0 \r\n  &lt;version&gt;6.1.0&lt;\/version&gt; \r\n&lt;\/dependency&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Working Process :\u00a0<\/strong><\/p>\n<p>1) Add Jasper Library\u00a0 to the project .<\/p>\n<p>2) Create some layout design before start reporting from Java code.\u00a0Jasper&#8217;s reporting layout design is nothing but an XML file with the extension <strong>.jrxml .\u00a0<\/strong>\u00a0JasperStudio or iReport as Gui tools can be used to visually design the JRXML file as well as textually.<\/p>\n<div class=\"toolbox noBullets colRight\"><\/div>\n<p>3) This JRXML file is need to be compiled to generate <strong>.jasper\u00a0<\/strong>. JRXML file can be compiled on the fly, dynamically from our Java code . We can also use iReport or JasperStudio to compile the jrxml file to create a Jasper file.<\/p>\n<p>4) Once compiled and <strong>.jasper<\/strong> are created, we can start feeding data into the report from the Java code.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-4438\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Diagram_2_Akshay-300x114.png\" alt=\"\" width=\"613\" height=\"233\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Diagram_2_Akshay-300x114.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Diagram_2_Akshay-624x237.png 624w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Diagram_2_Akshay.png 632w\" sizes=\"(max-width: 613px) 100vw, 613px\" \/><\/p>\n<p><strong>Tools that can be used to generate jrxml files :\u00a0<\/strong><\/p>\n<ol>\n<li>Eclipse plugin for jaspersoft studio<\/li>\n<li>iReport<\/li>\n<li>Jaspersoft Studio<\/li>\n<\/ol>\n<p><strong>Report Template<\/strong><\/p>\n<p>A jrxml report template is consist of the following parts shown in the below figure.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-4437\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Diagram_1_Akshay-300x128.png\" alt=\"\" width=\"516\" height=\"220\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Diagram_1_Akshay-300x128.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Diagram_1_Akshay.png 510w\" sizes=\"(max-width: 516px) 100vw, 516px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Designing a Report :<\/strong><\/p>\n<p>We are going to create a simple jasper report design i.e jrxml file through jaspersoft studio.<\/p>\n<p>You need to install the jaspersoft studion . After installation you need to follow these steps:<\/p>\n<p>Step 1. Go to\u00a0 File &gt; <strong>New &gt; others &gt; Jaspersoft Studio &gt; JasperReports project\u00a0\u00a0<\/strong><\/p>\n<p>Now enter the name of the project and press enter . Your created project will now be visible into the project explorer .<\/p>\n<p>Step 2. Select your created project name and right click then <strong>New &gt; Jasper Report &gt; Blank A4 (For practice ) &gt; Next &gt; enter the name of jrxml &gt; Next\u00a0 &gt; Next &gt; Finish<\/strong><\/p>\n<p>Your sample report design will be generated now with all the report design parts as shown in the below figure.<\/p>\n<p><img decoding=\"async\" class=\" wp-image-4343 aligncenter\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/04\/Sample-jrxml-design-view-300x159.png\" alt=\"\" width=\"679\" height=\"360\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/04\/Sample-jrxml-design-view-300x159.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/04\/Sample-jrxml-design-view-768x408.png 768w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/04\/Sample-jrxml-design-view-1024x544.png 1024w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/04\/Sample-jrxml-design-view-624x332.png 624w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/04\/Sample-jrxml-design-view.png 1366w\" sizes=\"(max-width: 679px) 100vw, 679px\" \/><\/p>\n<p>You can also switch to <strong>Source view\u00a0<\/strong>to see the jrxml code of the default generated code of the report design. Below is the jrxml code .<\/p>\n<pre class=\"lang:default decode:true\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!-- Created with Jaspersoft Studio version 6.4.0.final using JasperReports Library version 6.4.1  --&gt;\r\n&lt;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=\"Blank_A4\" pageWidth=\"595\" pageHeight=\"842\" columnWidth=\"555\" leftMargin=\"20\" rightMargin=\"20\" topMargin=\"20\" bottomMargin=\"20\" uuid=\"a51bd162-94c0-42cc-8eea-ccac0f4dc317\"&gt;\r\n\t&lt;property name=\"com.jaspersoft.studio.data.defaultdataadapter\" value=\"One Empty Record\"\/&gt;\r\n\t&lt;queryString&gt;\r\n\t\t&lt;![CDATA[]]&gt;\r\n\t&lt;\/queryString&gt;\r\n\t&lt;background&gt;\r\n\t\t&lt;band splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/background&gt;\r\n\t&lt;title&gt;\r\n\t\t&lt;band height=\"79\" splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/title&gt;\r\n\t&lt;pageHeader&gt;\r\n\t\t&lt;band height=\"35\" splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/pageHeader&gt;\r\n\t&lt;columnHeader&gt;\r\n\t\t&lt;band height=\"61\" splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/columnHeader&gt;\r\n\t&lt;detail&gt;\r\n\t\t&lt;band height=\"125\" splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/detail&gt;\r\n\t&lt;columnFooter&gt;\r\n\t\t&lt;band height=\"45\" splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/columnFooter&gt;\r\n\t&lt;pageFooter&gt;\r\n\t\t&lt;band height=\"54\" splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/pageFooter&gt;\r\n\t&lt;summary&gt;\r\n\t\t&lt;band height=\"42\" splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/summary&gt;\r\n&lt;\/jasperReport&gt;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Now you can change this report design from <strong>source view <\/strong>by manually writing the jrxml code or you can switch to the <strong>design view <\/strong>where you can drag and drop the components from the Pallet view present at the right side .<\/p>\n<p>In this case we are manually writing the jrxml code . In this report design we are taking four string fields as id , name , department , email .<\/p>\n<pre class=\"lang:default decode:true\">&lt;field name=\"id\" class=\"java.lang.String\"\/&gt;\r\n&lt;field name=\"name\" class=\"java.lang.String\"\/&gt;\r\n&lt;field name=\"department\" class=\"java.lang.String\"\/&gt;\r\n&lt;field name=\"email\" class=\"java.lang.String\"\/&gt;\r\n<\/pre>\n<p>We will now define the field header for all the four fields in the page header part of the jrxml report.<\/p>\n<pre class=\"lang:default decode:true\">&lt;pageHeader&gt;\r\n        &lt;band height=\"30\" splitType=\"Stretch\"&gt;\r\n            &lt;staticText&gt;\r\n                &lt;reportElement x=\"0\" y=\"0\" width=\"69\" height=\"24\" uuid=\"012424cf-712d-4e84-9906-776e1850b85a\"\/&gt;\r\n                &lt;textElement verticalAlignment=\"Bottom\"&gt;\r\n                    &lt;font size=\"10\" isBold=\"false\"\/&gt;\r\n                &lt;\/textElement&gt;\r\n                &lt;text&gt;&lt;![CDATA[ID]]&gt;&lt;\/text&gt;\r\n            &lt;\/staticText&gt;\r\n            &lt;staticText&gt;\r\n                &lt;reportElement x=\"140\" y=\"0\" width=\"94\" height=\"24\" uuid=\"724d23ca-6ad1-4be5-bae1-77c07dd31ba0\"\/&gt;\r\n                &lt;textElement textAlignment=\"Center\"\/&gt;\r\n                &lt;text&gt;&lt;![CDATA[Name]]&gt;&lt;\/text&gt;\r\n            &lt;\/staticText&gt;\r\n            &lt;staticText&gt;\r\n                &lt;reportElement x=\"280\" y=\"0\" width=\"69\" height=\"24\" uuid=\"1e85a3f6-ba9d-47a7-8f25-cf37f5b4448d\"\/&gt;\r\n                &lt;text&gt;&lt;![CDATA[Department]]&gt;&lt;\/text&gt;\r\n            &lt;\/staticText&gt;\r\n            &lt;staticText&gt;\r\n                &lt;reportElement x=\"420\" y=\"0\" width=\"108\" height=\"24\" uuid=\"044a8958-4960-4fa3-9cd6-c594595c521a\"\/&gt;\r\n                &lt;text&gt;&lt;![CDATA[Email]]&gt;&lt;\/text&gt;\r\n            &lt;\/staticText&gt;\r\n        &lt;\/band&gt;\r\n    &lt;\/pageHeader&gt;\r\n<\/pre>\n<p>Now we will use the above declared fields in the detail part of the jrxml report because this fields value will get repeated row by row according to the how many records that we will send from java code.<\/p>\n<pre class=\"lang:default decode:true\">&lt;detail&gt;\r\n        &lt;band height=\"30\" splitType=\"Stretch\"&gt;\r\n            &lt;textField&gt;\r\n                &lt;reportElement x=\"0\" y=\"0\" width=\"69\" height=\"24\" uuid=\"d844cada-1aa4-4208-9fc1-dcdf62a72235\"\/&gt;\r\n                &lt;textFieldExpression&gt;&lt;![CDATA[$F{id}]]&gt;&lt;\/textFieldExpression&gt;\r\n            &lt;\/textField&gt;\r\n            &lt;textField&gt;\r\n                &lt;reportElement x=\"140\" y=\"0\" width=\"94\" height=\"24\" uuid=\"14399970-e399-41e0-b6f9-1218079fd56c\"\/&gt;\r\n                &lt;textFieldExpression&gt;&lt;![CDATA[$F{name}]]&gt;&lt;\/textFieldExpression&gt;\r\n            &lt;\/textField&gt;\r\n            &lt;textField&gt;\r\n                &lt;reportElement x=\"280\" y=\"0\" width=\"69\" height=\"24\" uuid=\"b5b0fe03-9b8f-48c6-ba51-c218427028f6\"\/&gt;\r\n                &lt;textFieldExpression&gt;&lt;![CDATA[$F{department}]]&gt;&lt;\/textFieldExpression&gt;\r\n            &lt;\/textField&gt;\r\n            &lt;textField&gt;\r\n                &lt;reportElement x=\"420\" y=\"0\" width=\"108\" height=\"24\" uuid=\"c3094477-bb5e-4d5c-a440-8d7c7f2a1d3e\"\/&gt;\r\n                &lt;textFieldExpression&gt;&lt;![CDATA[$F{email}]]&gt;&lt;\/textFieldExpression&gt;\r\n            &lt;\/textField&gt;\r\n        &lt;\/band&gt;\r\n    &lt;\/detail&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>Final\u00a0 jrxml file &#8220;<strong>demoReport.jrxml<\/strong>&#8221; is given below :<\/p>\n<pre class=\"lang:default decode:true\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;!-- Created with Jaspersoft Studio version 6.4.0.final using JasperReports Library version 6.4.1  --&gt;\r\n&lt;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=\"demoReport\" pageWidth=\"595\" pageHeight=\"842\" columnWidth=\"555\" leftMargin=\"20\" rightMargin=\"20\" topMargin=\"20\" bottomMargin=\"20\" uuid=\"bccd7b7d-02f3-464f-a375-471fa1e42b49\"&gt;\r\n\t&lt;property name=\"com.jaspersoft.studio.data.defaultdataadapter\" value=\"One Empty Record\"\/&gt;\r\n\t&lt;parameter name=\"fontSize\" class=\"java.lang.Integer\"\/&gt;\r\n\t&lt;queryString&gt;\r\n\t\t&lt;![CDATA[]]&gt;\r\n\t&lt;\/queryString&gt;\r\n\t&lt;field name=\"id\" class=\"java.lang.String\"\/&gt;\r\n\t&lt;field name=\"name\" class=\"java.lang.String\"\/&gt;\r\n\t&lt;field name=\"department\" class=\"java.lang.String\"\/&gt;\r\n\t&lt;field name=\"email\" class=\"java.lang.String\"\/&gt;\r\n\t&lt;background&gt;\r\n\t\t&lt;band splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/background&gt;\r\n\t&lt;columnHeader&gt;\r\n\t\t&lt;band height=\"44\" splitType=\"Stretch\"&gt;\r\n\t\t\t&lt;staticText&gt;\r\n\t\t\t\t&lt;reportElement x=\"1\" y=\"0\" width=\"100\" height=\"30\" uuid=\"be117d48-bee0-4c3d-afce-cd81da251bcc\"\/&gt;\r\n\t\t\t\t&lt;textElement&gt;\r\n\t\t\t\t\t&lt;font size=\"18\" isBold=\"true\"\/&gt;\r\n\t\t\t\t&lt;\/textElement&gt;\r\n\t\t\t\t&lt;text&gt;&lt;![CDATA[id]]&gt;&lt;\/text&gt;\r\n\t\t\t&lt;\/staticText&gt;\r\n\t\t\t&lt;staticText&gt;\r\n\t\t\t\t&lt;reportElement x=\"102\" y=\"0\" width=\"100\" height=\"30\" uuid=\"bdbda25a-38ef-4010-83ea-dc18fd403a4b\"\/&gt;\r\n\t\t\t\t&lt;textElement&gt;\r\n\t\t\t\t\t&lt;font size=\"18\" isBold=\"true\"\/&gt;\r\n\t\t\t\t&lt;\/textElement&gt;\r\n\t\t\t\t&lt;text&gt;&lt;![CDATA[name]]&gt;&lt;\/text&gt;\r\n\t\t\t&lt;\/staticText&gt;\r\n\t\t\t&lt;staticText&gt;\r\n\t\t\t\t&lt;reportElement x=\"247\" y=\"0\" width=\"100\" height=\"30\" uuid=\"fb10bd50-e465-4047-baa8-bb08a606f0e3\"\/&gt;\r\n\t\t\t\t&lt;textElement&gt;\r\n\t\t\t\t\t&lt;font size=\"18\" isBold=\"true\"\/&gt;\r\n\t\t\t\t&lt;\/textElement&gt;\r\n\t\t\t\t&lt;text&gt;&lt;![CDATA[department]]&gt;&lt;\/text&gt;\r\n\t\t\t&lt;\/staticText&gt;\r\n\t\t\t&lt;staticText&gt;\r\n\t\t\t\t&lt;reportElement x=\"449\" y=\"0\" width=\"100\" height=\"30\" uuid=\"b61d2a02-9d6e-4542-af3a-ec52dc92f03f\"\/&gt;\r\n\t\t\t\t&lt;textElement&gt;\r\n\t\t\t\t\t&lt;font size=\"18\" isBold=\"true\"\/&gt;\r\n\t\t\t\t&lt;\/textElement&gt;\r\n\t\t\t\t&lt;text&gt;&lt;![CDATA[email]]&gt;&lt;\/text&gt;\r\n\t\t\t&lt;\/staticText&gt;\r\n\t\t&lt;\/band&gt;\r\n\t&lt;\/columnHeader&gt;\r\n\t&lt;detail&gt;\r\n\t\t&lt;band height=\"59\" splitType=\"Stretch\"&gt;\r\n\t\t\t&lt;textField&gt;\r\n\t\t\t\t&lt;reportElement x=\"5\" y=\"11\" width=\"100\" height=\"30\" uuid=\"774b5b2d-0a8d-482b-b03f-dafe2f256ef1\"\/&gt;\r\n\t\t\t\t&lt;textFieldExpression&gt;&lt;![CDATA[$F{id}]]&gt;&lt;\/textFieldExpression&gt;\r\n\t\t\t&lt;\/textField&gt;\r\n\t\t\t&lt;textField&gt;\r\n\t\t\t\t&lt;reportElement x=\"113\" y=\"10\" width=\"100\" height=\"30\" uuid=\"1db74ec3-f783-44b9-b8b1-547cf25abc37\"\/&gt;\r\n\t\t\t\t&lt;textFieldExpression&gt;&lt;![CDATA[$F{name}]]&gt;&lt;\/textFieldExpression&gt;\r\n\t\t\t&lt;\/textField&gt;\r\n\t\t\t&lt;textField&gt;\r\n\t\t\t\t&lt;reportElement x=\"240\" y=\"10\" width=\"100\" height=\"30\" uuid=\"0dbc3ed6-8d1f-41df-a14b-91b67e7aa7fe\"\/&gt;\r\n\t\t\t\t&lt;textFieldExpression&gt;&lt;![CDATA[$F{department}]]&gt;&lt;\/textFieldExpression&gt;\r\n\t\t\t&lt;\/textField&gt;\r\n\t\t\t&lt;textField&gt;\r\n\t\t\t\t&lt;reportElement x=\"430\" y=\"10\" width=\"100\" height=\"30\" uuid=\"9836e476-4267-4967-be26-6ef24b00f02d\"\/&gt;\r\n\t\t\t\t&lt;textFieldExpression&gt;&lt;![CDATA[$F{email}]]&gt;&lt;\/textFieldExpression&gt;\r\n\t\t\t&lt;\/textField&gt;\r\n\t\t&lt;\/band&gt;\r\n\t&lt;\/detail&gt;\r\n\t&lt;columnFooter&gt;\r\n\t\t&lt;band splitType=\"Stretch\"\/&gt;\r\n\t&lt;\/columnFooter&gt;\r\n&lt;\/jasperReport&gt;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>The Design version of the above generated\u00a0 sample report is given below . You can check that design view by clicking the design view option in jaspersoft studio.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4443\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture4-300x122.png\" alt=\"\" width=\"630\" height=\"256\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture4-300x122.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture4-768x312.png 768w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture4-1024x415.png 1024w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture4-624x253.png 624w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture4.png 1321w\" sizes=\"(max-width: 630px) 100vw, 630px\" \/><\/p>\n<p>The Preview of the demo report that is generated above is given below. You can check the preview in the jaspersoft studio by clicking the preview button .<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4445\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture5-300x177.png\" alt=\"\" width=\"617\" height=\"364\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture5-300x177.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture5-624x369.png 624w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/Capture5.png 634w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Compiling the jasper report :<\/strong><\/p>\n<p>We will now compile the report design i.e jrxml file . After compilation a .jasper file will be generated . For compilation we will use JasperCompileManager class and we will use its static method compileReportToFile to compile the jrxml report . During compilation if report design is not a valid design a JRException will occur.<\/p>\n<pre class=\"lang:default decode:true\">String sourceFileName = \"D:\/\/demoReport.jrxml\";\r\ntry {\r\n      \/\/Compiling the jrxml  \r\n      JasperCompileManager.compileReportToFile(sourceFileName);\r\n } catch (JRException e) {\r\n      e.printStackTrace();\r\n }<\/pre>\n<p><strong>\u00a0<\/strong>Below is the given program to compile the jrxml report and generate a jasper file. After compilation <strong>&#8220;demoReport.jasper&#8221;\u00a0<\/strong>file will get generated.<\/p>\n<pre class=\"lang:default decode:true\">import net.sf.jasperreports.engine.JRException;\r\nimport net.sf.jasperreports.engine.JasperCompileManager;\r\n\r\npublic class JasperReportCompilationExample {\r\n   public static void main(String[] args) {\r\n      String sourceFileName = \"D:\/\/demoReport.jrxml\";\r\n      System.out.println(\"Compiling Report Design ...\");\r\n      try {\r\n       JasperReport jasperReport =  JasperCompileManager.compileReportToFile(sourceFileName);\r\n      } catch (JRException e) {\r\n         e.printStackTrace();\r\n      }\r\n      System.out.println(\"Compilation Done!!! ...\");\r\n   }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Creating the EmployeeRecordModel Class with the four fields of type string that is declared in the demoReport .<\/p>\n<pre class=\"lang:default decode:true\">public class EmployeeRecordModel {\r\n\t\r\n\tprivate String id;\r\n\tprivate String name;\r\n\tprivate String department;\r\n\tprivate String email;\r\n\r\n\tpublic EmployeeRecordModel(String id, String name , String department , String email){\r\n\t\tthis.id = id;\r\n\t\tthis.name = name;\r\n\t\tthis.department = department;\r\n\t\tthis.email = email;\r\n\t}\r\n        public String getId() {\r\n\t\treturn id;\r\n\t}\r\n        public void setId(String id) {\r\n\t\tthis.id = id;\r\n\t}\r\n\r\n\tpublic String getName() {\r\n\t\treturn name;\r\n\t}\r\n\r\n\tpublic void setName(String name) {\r\n\t\tthis.name = name;\r\n\t}\r\n\r\n\tpublic String getDepartment() {\r\n\t\treturn department;\r\n\t}\r\n\r\n\tpublic void setDepartment(String department) {\r\n\t\tthis.department = department;\r\n\t}\r\n\r\n\tpublic String getEmail() {\r\n\t\treturn email;\r\n\t}\r\n\r\n\tpublic void setEmail(String email) {\r\n\t\tthis.email = email;\r\n\t}\r\n}\r\n<\/pre>\n<p>Creating JRDataSource object by passing the list of EmployeeRecordModel object in the argument.<\/p>\n<pre class=\"lang:default decode:true\">List&lt;EmployeeRecordModel&gt; modelList = new ArrayList&lt;EmployeeRecordModel&gt;();\r\nmodelList.add(new EmployeeRecordModel(\"1\",\"Akshay\",\"IT\",\"akshaysharma@gmail.com\"));\r\nmodelList.add(new EmployeeRecordModel(\"2\",\"Rahul\",\"IT\",\"rahulgupta@gmail.com\")); \r\nmodelList.add(new EmployeeRecordModel(\"3\",\"Dev\",\"IT\",\"dev@gmail.com\")); \r\nmodelList.add(new EmployeeRecordModel(\"4\",\"Ankit\",\"IT\",\"ankit@gmail.com\")); \r\nJRBeanCollectionDataSource dataSource\u00a0 = new JRBeanCollectionDataSource(modelList);\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Generating the jasper Print object\u00a0 :<\/strong><\/p>\n<p>Now generating the JasperPrint object from the compile report i.e .jasper file by calling the static fillReport method of JasperFillManager class . This method accepts three arguments .<\/p>\n<pre class=\"lang:default decode:true\">public static JasperPrint fillReport(\r\n\t\tJasperReport jasperReport, \r\n\t\tMap&lt;String,Object&gt; parameters, \r\n\t\tJRDataSource dataSource\r\n);<\/pre>\n<p>Where , first argument is the jasperReport object . Second argument is map of parameters that we have used in our report . Third argument is JRDataSource object which is basically the the data source of the list of records having the fields that is used in the report.<\/p>\n<pre class=\"lang:default decode:true\">JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);<\/pre>\n<p>Now , exporting the the report as pdf file using the JasperExportManager class.<\/p>\n<pre class=\"lang:default decode:true\">String path = \"D:\/\/demoReportOutput.pdf\";\r\nJasperExportManager.exportReportToPdfFile(jasperPrint,path);\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Whole program performing all the operation is given below.<\/p>\n<pre class=\"lang:default decode:true\">import java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport net.sf.jasperreports.engine.JRException;\r\nimport net.sf.jasperreports.engine.JasperCompileManager;\r\nimport net.sf.jasperreports.engine.JasperExportManager;\r\nimport net.sf.jasperreports.engine.JasperFillManager;\r\nimport net.sf.jasperreports.engine.JasperPrint;\r\nimport net.sf.jasperreports.engine.JasperReport;\r\nimport net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;\r\n\r\n\r\npublic class JasperPractice {\r\n\r\n\tpublic static void main(String[] args) throws JRException {\r\n\t\tString sourceFileName = \"D:\/\/demoReport.jrxml\";\r\n\t\tJasperReport jasperReport = null;\r\n\t\t\r\n\t    jasperReport = JasperCompileManager.compileReport(sourceFileName);\r\n\t\t \r\n\t\t\r\n\t\tList&lt;EmployeeRecordModel&gt; modelList = new ArrayList&lt;EmployeeRecordModel&gt;();\r\n\t\tmodelList.add(new EmployeeRecordModel(\"1\",\"Akshay\",\"IT\",\"akshaysharma@gmail.com\"));\r\n\t\tmodelList.add(new EmployeeRecordModel(\"2\",\"Rahul\",\"IT\",\"rahulgupta@gmail.com\")); \r\n\t\tmodelList.add(new EmployeeRecordModel(\"3\",\"Dev\",\"IT\",\"dev@gmail.com\")); \r\n\t\tmodelList.add(new EmployeeRecordModel(\"4\",\"Ankit\",\"IT\",\"ankit@gmail.com\")); \r\n\t\t\r\n\t\tJRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(modelList);\r\n\t\t\r\n\t\tMap&lt;String,Object&gt; params = new HashMap&lt;String,Object&gt;();\r\n\t\tJasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);\r\n\t\t\r\n\t\tString path = \"D:\/\/demoReportOutput.pdf\";\r\n\t\tJasperExportManager.exportReportToPdfFile(jasperPrint,path);\r\n\t\t\r\n\t}\r\n\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Output pdf generated is given below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4447\" src=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/output-300x160.png\" alt=\"\" width=\"647\" height=\"345\" srcset=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/output-300x160.png 300w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/output-768x409.png 768w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/output-1024x545.png 1024w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/output-624x332.png 624w, https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/output.png 1366w\" sizes=\"(max-width: 647px) 100vw, 647px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>JasperReports is an open source reporting engine. It provides ability to deliver rich content onto to the printer, the screen,\u00a0 or into various formats such as\u00a0 PDF, HTML, XLS, RTF, ODT, CSV, TXT and XML files. It is a Java library and can be used in a variety of Java-enabled applications to generate dynamic content. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4374,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[256,261],"tags":[245,224,249,262],"class_list":["post-4329","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-application","category-reporting","tag-j2ee","tag-java","tag-java-library","tag-reports"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Jasper Reports - Open Source Reporting Tool - InnovationM - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jasper Reports - Open Source Reporting Tool - InnovationM - Blog\" \/>\n<meta property=\"og:description\" content=\"JasperReports is an open source reporting engine. It provides ability to deliver rich content onto to the printer, the screen,\u00a0 or into various formats such as\u00a0 PDF, HTML, XLS, RTF, ODT, CSV, TXT and XML files. It is a Java library and can be used in a variety of Java-enabled applications to generate dynamic content. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-17T05:42:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-20T13:25:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/banner4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1136\" \/>\n\t<meta property=\"og:image:height\" content=\"528\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Jasper Reports &#8211; Open Source Reporting Tool\",\"datePublished\":\"2018-05-17T05:42:23+00:00\",\"dateModified\":\"2023-01-20T13:25:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/\"},\"wordCount\":878,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/banner4.png\",\"keywords\":[\"J2EE\",\"java\",\"Java Library\",\"Reports\"],\"articleSection\":[\"Java Application\",\"Reporting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/\",\"name\":\"Jasper Reports - Open Source Reporting Tool - InnovationM - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/banner4.png\",\"datePublished\":\"2018-05-17T05:42:23+00:00\",\"dateModified\":\"2023-01-20T13:25:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/banner4.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/05\\\/banner4.png\",\"width\":1136,\"height\":528},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/jasper-reports-open-source-reporting-tool\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jasper Reports &#8211; Open Source Reporting Tool\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Jasper Reports - Open Source Reporting Tool - InnovationM - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/","og_locale":"en_US","og_type":"article","og_title":"Jasper Reports - Open Source Reporting Tool - InnovationM - Blog","og_description":"JasperReports is an open source reporting engine. It provides ability to deliver rich content onto to the printer, the screen,\u00a0 or into various formats such as\u00a0 PDF, HTML, XLS, RTF, ODT, CSV, TXT and XML files. It is a Java library and can be used in a variety of Java-enabled applications to generate dynamic content. [&hellip;]","og_url":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/","og_site_name":"InnovationM - Blog","article_published_time":"2018-05-17T05:42:23+00:00","article_modified_time":"2023-01-20T13:25:44+00:00","og_image":[{"width":1136,"height":528,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/banner4.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Jasper Reports &#8211; Open Source Reporting Tool","datePublished":"2018-05-17T05:42:23+00:00","dateModified":"2023-01-20T13:25:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/"},"wordCount":878,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/banner4.png","keywords":["J2EE","java","Java Library","Reports"],"articleSection":["Java Application","Reporting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/","url":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/","name":"Jasper Reports - Open Source Reporting Tool - InnovationM - Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/banner4.png","datePublished":"2018-05-17T05:42:23+00:00","dateModified":"2023-01-20T13:25:44+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/banner4.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2018\/05\/banner4.png","width":1136,"height":528},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/jasper-reports-open-source-reporting-tool\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Jasper Reports &#8211; Open Source Reporting Tool"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/4329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=4329"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/4329\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/4374"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=4329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=4329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=4329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}