java开发如何使用jasperreport导出pdf文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java开发如何使用jasperreport导出pdf文件相关的知识,希望对你有一定的参考价值。

参考技术A 不能直接导出吗?不会是出问题了吧。你要不然试试finereport,导出格式很多,而且操作也简单,学起来很快。 参考技术B 这个你去jasperreport的网站上看一下文档就可以了,这一句话说不清楚本回答被提问者和网友采纳 参考技术C 买本书看看吧。 参考技术D 如果只是到处,那很容易啊
直接写出文件到页面就可以了
第5个回答  2014-01-24 网上案例可多了,导出有直接就打开了

JasperReport使用

JasperReport介绍

JasperReport是一个非常强大,易用的开源报表引擎,用Java语言编写。可以导出各种格式的文档,如HTML,PDF,Execel,Word等)

 

一、安装Jaspersoft Sutdio

Jaspersoft Sutdio是一个设计报表的模板工具

下载Jaspersoft Sutdio CE  下载地址

 

二、使用Saspersoft Studio创建模板

1、创建工程New->Project 

 

 

选择JasperReports Project

 

 

命名为ReportFirst

 

2、创建模板

New-> Jasper Report->

 

 

选择Blank A4,点击Next

 

命名为template1.jrxml

Data Adapter选择One Empty Record,即空数据源。

 

3、模板设计界面的区域说明

 

 

 Title: 标题区,如果数据有多页只会在第一页打印

Page Header: 页头区,多页的情况下每页都会打印

Column Header:列头区,配合下面的Detail区打印列表数据,多页的情况下每页都会打印

Detail:可以新增多个Detail区,可以组合打印出多个列表数据,多页的情况下每页都会打印

Column Footer:列表底部区,多页的情况下每页都会打印

Page Footer:页底部区,多页的情况下每页都会打印

Summary:合计区,只会在最后一页打印

 

4、添加元素

1) 在右侧Basic Elements区域拖拽一个Static Text,  文字为: This is title head。

 

 

2) 在左侧Outline区域Parameters上右键-> Creat Parameter.

 

 

命名为name, Class为java.lang.String

 

3)拖拽那么属性到Page Header

 

 

4) 在左侧Outline区域Fields右键创建两个字段 name,age

 

 然后将name和age拖拽到Detail区域。

 

 

选择预览,name输入zhangsan,效果如下图所示

 

 

5、编译模板

 

生成了template1.jasper文件

 

三、在Java中使用模板

1)引入依赖

        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.12.1</version>
        </dependency>

  

2) 把template1.jasper放入资源文件夹中

3) 编写生成pdf代码

    @GetMapping("/testJasper")
    public void createPdf(HttpServletRequest request, HttpServletResponse response) throws Exception {
        HashMap<String,Object> params = new HashMap<>();
        params.put("name","title name");

        List<HashMap> list = new ArrayList<>();
        for(int i = 0; i < 20; i++){
            HashMap<String,String> item = new HashMap<>(2);
            item.put("name","zhangsan-" + i);
            item.put("age",String.valueOf(i + 10));
            list.add(item);
        }
        
        String templatePath = "templates/template1.jasper";
        JasperReportUtil.exportToPdf(templatePath,params,list, response);
    }

  

exportToPdf方法:

    public static void exportToPdf(String jasperPath, Map parameters, List<?> list, HttpServletResponse response) throws Exception {
        OutputStream outputStream = response.getOutputStream();
        try {
            ClassPathResource resource = new ClassPathResource(jasperPath);
            response.setContentType(getContentType(ReportType.PDF));
            InputStream jasperStream = resource.getInputStream();
            JasperPrint jasperPrint = getJasperPrint(jasperStream, parameters, list);
            JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
        } catch (Exception e) {
            //log.error("读取报表异常", e);
            outputStream.write("读取报表异常".getBytes());
        } finally {
            outputStream.flush();
            outputStream.close();
        }
    }

  

http://127.0.0.1:8080/testJasper

效果如下图所示:

 

 参考: JasperReports入门教程

以上是关于java开发如何使用jasperreport导出pdf文件的主要内容,如果未能解决你的问题,请参考以下文章

java使用jasperreport导出在tomact可以使用,但在websphere不行,

JasperReports 服务器:如何使用 url 将报告导出为 html 文件

JasperReports - 导出到 Excel 时无法识别数值

jasperreports-server中的示例报表是怎么制作的

JasperReport使用

JasperReports xlsx 导出错误 - 内容不可读 - 为啥?