您的位置:首页 > 编程语言 > ASP

java web 使用jasperReport 生成PDF报表

2016-09-12 16:21 656 查看
        本文章主要讲述的是使用iReport工具生成jasper文件,在web应用中生成pdf文件。其原理非常简单,主要是依赖jar包需要注意,但你也可以根据异常进行判断那些jar包没有导入。让我们来简单看一下吧。

第一步:使用iReport工具生成jasper文件。

  注:这里就不详细介绍了,不会的可以问度娘。

第二步:将生成的jasper文件放入项目中,并导入相关的jar包(需要的jar包在最后给出)

第三步:使用jasper生成pdf文档。此处的文档以附件的形式提供保存,但也可以使用流的方式写在本地,其原理一样。

注:这里是使用spring mvc框架。

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import com.zyiot.service.LogService;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JasperExportManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

@Controller

@RequestMapping("/exportPDF")

public class ExportPDFController extends BaseController {

    private LogService logService;

    private DataSource dataSource;

    

    public LogService getLogService() {

        return logService;

    }

    @Autowired

    public void setLogService(LogService logService) {

        this.logService = logService;

    }

    

    public DataSource getDataSource() {

        return dataSource;

    }

    @Autowired

    public void setDataSource(DataSource dataSource) {

        this.dataSource = dataSource;

    }

    @RequestMapping("/ePDF")

    public void exportPDF(HttpServletRequest request, HttpServletResponse response) {

        //设置响应内容格式

        response.setContentType("application/pdf"); 

       //附件名称

        String attName = null;

        OutputStream out = null;

        try {

            codeName = URLEncoder.encode("操作日志", "UTF-8");

             //设置响应头,attachment:以附件形式,也可以直接在页面打开

             response.addHeader("Content-Disposition", "attachment;filename=" + attName + ".pdf");

            //设置jasper中的参数

           //key 参数名  ,value 参数值

            Map<String,Object> parameters = new HashMap<String,Object>();

            //这里给的是数据库连接,你也可以是个集合,根据自己需求,填充jasper

            Connection connection = dataSource.getConnection();

            //获取jasper文件。

            InputStream in = ExportPDFController.class.getResourceAsStream("/reoprt/report1.jasper");

            //填充jasper,生成打印或导出实例

            JasperPrint jasperPrint = JasperFillManager.fillReport(in, null, connection);

            //使导出转换成更具体(popular formats)的形式,PDF、HTML、XML

             byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);

             //得到响应流

             out = response.getOutputStream();

             //输出到响应中

             out.write(bytes);  

             out.flush();  

             out.close();  

            

        } catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (JRException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (UnsupportedEncodingException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

附:需要的jar包

commons-digester.jar

commons-logging-1.1.2.jar

groovy-all-2.4.6.jar

org.apache.commons.collections.jar

iText-2.1.7.js2.jar

iTextAsian.jar

jasperreports-5.6.0.jar

注:其包不一定包含全部,可根据具体需求进行添加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: