Wednesday, January 23, 2013
How to print base64 image in jasper report pdf ?
How to print base64 image in jasper report pdf ?
1) import base64 class in jrxml file <import value="org.apache.commons.codec.binary.Base64"/>
2) Create two parameters logo and base64Img in jasper report.
3) logo parameter class as String (java.lang.String) and
4) base64Img parameter class as InputStream (java.io.InputStream) and
5) base64Img parameter Default Value expression should be like "new ByteArrayInputStream(new Base64().decodeBase64($P{logo}.getBytes("UTF-8")))"
Thats all..
Note :
parameter class - specifies the type of that parameter
Default Value expression - just like method. we can write our implementation here.
@Test
public void base64ImageAsStream() {
try {
compileReports();
System.out.println("report ");
String outFileNamePDF = "/Users/user/Tried/POC/imageStreamToPdf/base64ImageStream.pdf";
new File(outFileNamePDF).getParentFile().mkdirs();
String containerJrxmlFile = "/Users/user/Tried/POC/imageStreamToPdf/imageToStreamPdf.jrxml";
Map<String, Object> parameters = new HashMap<String,Object>();
File img = new File("/Users/user/Desktop/wallpaper.jpg");
InputStream fis = new FileInputStream(img);
byte[] imgByte = null;
imgByte = IOUtils.toByteArray(fis);
byte[] encodedImage = Base64.encodeBase64(imgByte);
String encodeImg = new String(encodedImage);
System.out.println("printnng");
parameters.put("logo", encodeImg);
InputStream reportStream = new FileInputStream(containerJrxmlFile);
BufferedInputStream bufferedInputStream = new BufferedInputStream(reportStream);
JasperDesign jasperDesign = JRXmlLoader.load(bufferedInputStream);
// JasperReport jasperReport = (JasperReport) JRLoader.loadObject("/Users/user/Tried/POC/imageStreamToPdf/imageToStreamPdf.jasper");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileNamePDF);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.exportReport();
System.out.println("pdf report created .... ");
} catch (Exception e) {
e.printStackTrace();
}
}
Enjoy the coding !!!
--
Thank you.
Regards,
Kaleeswaran.S
Related Posts
Subscribe to:
Post Comments (Atom)
Hello and thanks for this post, I've a question. Isn't necessary insert an image in the jrxml ?? if this answer is yes, with which name parameter: $P{logo} or $P{base64Img}.
ReplyDeleteThanks for all.