Ireport客户端打印
1. 新建一个web项目Outireport。如图:
2. 向lib导入ireport报表需要的包jasperreports-4.0.2.jar, jasperreports-applet-4.0.2.jar, commons-collections-2.1.jar, commons-logging-1.0.2.jar, groovy-all-1.7.5.jar, iText-2.1.7.jar, iTextAsian.jar(这几个表可能有个别包不是必须)。如图:
3. 在WebRoot中新建一个名为ireport的目录,里面存放打印的ireport报表,我这里是一个用户的报表。如图:
4. 在src中新建一个applet的目录,在applet中新建一个名为IreportServlet.java的servlet。代码如下:
- package applet;
- import java.io.File;
- import java.io.IOException;
- import java.io.ObjectOutputStream;
- import java.util.ArrayList;
- import java.util.List;
- import javax.servlet.ServletException;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import net.sf.jasperreports.engine.JasperFillManager;
- import net.sf.jasperreports.engine.JasperPrint;
- import net.sf.jasperreports.engine.JasperReport;
- import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
- import net.sf.jasperreports.engine.util.JRLoader;
- public class IreportServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- public void destroy() {
- super.destroy(); // Just puts "destroy" string in log
- }
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doPost(request, response);
- }
- protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- List list=new ArrayList();
- try{
- Users users=null;
- for(int i=0;i<2;i++)
- {
- users=new Users();
- users.setUserName("yzp"+i);
- users.setSex(""+i);
- users.setPhone("13410479904");
- users.setPhone("19890214");
- list.add(users);
- }
- JRBeanCollectionDataSource jds =new JRBeanCollectionDataSource(list); //使用javabean数据源
- String url=this.getServletContext().getRealPath("/")+"/ireport/users.jasper";//报表模板的文件路径
- File reportFile = new File(url);
- JasperReport report=(JasperReport) JRLoader.loadObject(reportFile.getPath());
- JasperPrint jasperPrint=null;
- jasperPrint= JasperFillManager.fillReport(report, null, jds);//将所有的数据填充到jasperPrint,形成正常的报表
- response.setContentType("application/pdf");
- ServletOutputStream ouputStream = response.getOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
- oos.writeObject(jasperPrint);//将JasperPrint对象写入对象输出流中
- oos.flush();
- oos.close();
- }catch(Exception e)
- {
- e.printStackTrace();
- }
- }
- }
package applet; import java.io.File; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.util.JRLoader; public class IreportServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void destroy() { super.destroy(); // Just puts "destroy" string in log } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List list=new ArrayList(); try{ Users users=null; for(int i=0;i<2;i++) { users=new Users(); users.setUserName("yzp"+i); users.setSex(""+i); users.setPhone("13410479904"); users.setPhone("19890214"); list.add(users); } JRBeanCollectionDataSource jds =new JRBeanCollectionDataSource(list); //使用javabean数据源 String url=this.getServletContext().getRealPath("/")+"/ireport/users.jasper";//报表模板的文件路径 File reportFile = new File(url); JasperReport report=(JasperReport) JRLoader.loadObject(reportFile.getPath()); JasperPrint jasperPrint=null; jasperPrint= JasperFillManager.fillReport(report, null, jds);//将所有的数据填充到jasperPrint,形成正常的报表 response.setContentType("application/pdf"); ServletOutputStream ouputStream = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(ouputStream); oos.writeObject(jasperPrint);//将JasperPrint对象写入对象输出流中 oos.flush(); oos.close(); }catch(Exception e) { e.printStackTrace(); } } }