Dynamic Image From Database in Jasper Report
When dealing with internal documentation in a company, images plays an important role. For example, company logo is a must in most of the documentation in a company. Here I am going to explain how to create dynamic images in jasper report fetched from the database.
I am using iReport 4.7.1 with OpenERP. In my report I am passing the image to the report as a parameter. I have created a parameter in iReport as "logo" which holds image data passed from the python to the report. In python side, i am fetching my logo as:
and passed to report as a parameter "logo". The variable class of logo should be "java.lang.String".
In report add a Report Import directive "org.apache.commons.codec.binary.Base64". To do that in iReport, right click on the report and go to "Properties" at the end you can see "Imports" as shown below:
Add the entry to it. Now create a variable say "photo" with "Variable class" as "java.io.InputStream", "Calculation" as "Nothing", "Reset Type" as "Report" and "Variable Expression" as:
new ByteArrayInputStream(new Base64().decodeBase64($P{logo}.getBytes("UTF-8")))
where $P{logo} is the parameter created earlier which contain image data.
Now drag and drop the image component from the pellet window. When the windows prompt to select the image, press cancel. Now in "Image Expression" field, add the variable $V{photo} created before and "Expression Class" as "java.io.InputStream". If you are intending to put the logo in title band, set evaluation time to "Report". Now the report should be printed with logo from the database.
Excellent post but I was
Excellent post but I was wondering if you could write a litte more on this subject?
I'd be very grateful if you could elaborate a little bit more.
Appreciate it!
thank you very much.
thank you very much.
Can you please point to a
Can you please point to a document or blog that would help setup jasper reports in OpenERP?
I created the report in iReports and it runs fine on jasper server. In openerp, I created the "Jasper Document" and tried to launch the report but I get unexpected end of input.
I took some hint from the NovaPoint document (as it is outdated), and saved the report as jrxml file under account_asset/report, and also created a account_asset_report.xml pointing to this report.
Is there anything else that I am missing?
Thanks