-
FEATURED COMPONENTS
First time here? Check out the FAQ!
i did code for create dynamic pdf reports posted in this link:
http://www.zkoss.org/forum/listComment/13209
what i could do for create dynamic html reports?
my code for pdf:
test.zul
<?page title="new page title" contentType="text/html;charset=UTF-8"?> <zk xmlns="http://www.zkoss.org/2005/zul"> <window title="new page title" border="normal" apply="${testeController}"> <iframe id="PDFreport" width="100%" height="100%"/> </window> </zk>
test.java
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package teste; import ar.com.fdvs.dj.core.DJServletHelper; import ar.com.fdvs.dj.domain.DynamicReport; import ar.com.fdvs.dj.domain.builders.FastReportBuilder; import ar.com.fdvs.dj.core.DynamicJasperHelper; import ar.com.fdvs.dj.core.layout.ClassicLayoutManager; import java.io.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.zkoss.util.media.AMedia; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Iframe; /** * * @author manuel */ public class TesteController extends GenericForwardComposer { Iframe PDFreport; @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); doReport(); } public void doReport() { try { FastReportBuilder drb = new FastReportBuilder(); DynamicReport dr; InputStream mediais; AMedia amedia; drb.addColumn("FirstName", "firstName", String.class.getName(), 30); drb.addColumn("LastName", "lastName", String.class.getName(), 30); drb.addColumn("MiddleName", "middleName", String.class.getName(), 30); drb.addColumn("SocialNumber", "socialNumber", String.class.getName(), 30); drb.setTitle("Test of Dynamic Columns Jasper Report"); drb.setPrintBackgroundOnOddRows(true); drb.setUseFullPageWidth(true); dr = drb.build(); List data = new ArrayList(); Map map1 = new HashMap(); map1.put("firstName", "Shainaz"); map1.put("lastName", "Tamboli"); map1.put("middleName", "Tajudin"); map1.put("socialNumber", "9700000000"); data.add(map1); System.out.println("Data:" + data); JRDataSource ds = new JRBeanCollectionDataSource(data); System.out.println("Ds:" + ds); JasperReport report = DynamicJasperHelper.generateJasperReport(dr, new ClassicLayoutManager(), new HashMap()); byte[] buf = JasperRunManager.runReportToPdf(report, new HashMap(), ds); //prepare the AMedia for iframe mediais = (InputStream) new ByteArrayInputStream(buf); amedia = new AMedia("AlarmHistoryReport.pdf", "pdf", "application/pdf", mediais); //set iframe content PDFreport.setContent(amedia); } catch (Exception e) { } } }
I needed to do the same in the past and i've decided to integrate a BIRT report engine in my project: it was working like a charm.
That time i've decided to separate the webapp, the web services for the CRUD and the BIRT engine in 3 different blocks for
project-related requirement but here you can keep it simple following the smalltalk here:
http://books.zkoss.org/wiki/Small_Talks/2009/July/Integrating_Birt_with_ZK
if you want to try to play with BIRT easly... try MyEclipse IDE: it has some nice integration plugins for BIRT that easly add BIRT capabilities to your ZK project without gettin mad and offer you also an easy visual editor to paint your reports.
Asked: 2011-12-08 12:50:46 +0800
Seen: 365 times
Last updated: Dec 09 '11