JasperReport + iReport 实现Java报表套打

来源:互联网 发布:sql server 截 字符串 编辑:程序博客网 时间:2024/05/16 01:29

                     JasperReport + iReport  实现报表套打

最近有个朋友问我在 Java 的 JasperReport 中怎么实现报表的套打,其实之前我也没有想过这个问题,他这么一问让我想到了一个解决方案。这个解决方案应该是可以的。呵呵。。

我这里没有给出打印的代码。因为这样的代码网上到处都有的,所有我就没有放上来了。

package com.vincent.report.demo;

import net.sf.jasperreports.engine.*;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;

/**
 * 测试
 * Created by IntelliJ IDEA.
 * User: liuxiaohua
 * Date: 2008-4-28
 * Time: 8:43:38
 * To change this template use File | Settings | File Templates.
 
*/
public class Demo extends HttpServlet {
    @SuppressWarnings(
"deprecation")
    
public void service(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {
        String doType 
= request.getParameter("doType");
        
try {
            
//Jasper 文件
            File reportFile = new File(request.getRealPath("/jasperreport/liuxiaohua_report.jasper"));
            Map paramter 
= new TreeMap();
            
//背景图片做为参数传递,不用写绝对路径
            paramter.put("image", request.getRealPath("/jasperreport/report.gif"));
            
//根据 doType 的不同,传递不同的参数(是否传递背景图片)
            
//这里需要注意的是:这报表的设计的时候 image 这个参数的 Use as a Prompt 复选框不要选
            
//如果你选了那你一定要传递这个参数过去
            
//这样你就在显示报表的时候传递一个背景图,打印时不传递背景图,打印出来的报表就没有背景了
            
//这样就可以实现套打,具体打印代码我就不写了。
            byte[] bytes = JasperRunManager.runReportToPdf(
                      reportFile.getPath(), doType.equalsIgnoreCase(
"print"? null : paramter, new JREmptyDataSource());
            
//生成PDF文件
            response.setContentType("application/pdf");
            ServletOutputStream ouputStream 
= response.getOutputStream();
            ouputStream.write(bytes, 
0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
        } 
catch (Exception e) {
            System.out.println(
"error");
            e.printStackTrace();
        }
    }
}
原创粉丝点击