jasper reports的踩坑之旅

起因:需要画合同评审表的模板,由于对HTML不够熟悉,所以找到了jasper reports,使用jasper reports来画合同评审表的模板,然后生成合同评审表pdf,然后输出到页面上。
关键代码:

 try {
 			// 导入模板
			File file = new File(sourcePath);
            JasperReport jasperReport = (JasperReport) JRLoader.loadObject(file);
            // 将JAVABEAN转换为map数据
            Map<String, Object> parameters = BeanMapTool.beanToMap(contractAudit);
            // 填充数据
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(auditFlowVOList));
            jasperPrintList.add(jasperPrint);
            // 输出pdf
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            JRPdfExporter exporter = new JRPdfExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
            exporter.exportReport();
            byte[] bytes = baos.toByteArray();
            File exportPdf = new File(fileSavePath+"\\" + orderNum + "合同评审表.pdf");

            try {
                FileOutputStream fos = new FileOutputStream(exportPdf);
                fos.write(bytes);
                System.out.println("写入成功");
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (JRException e) {
            e.printStackTrace();
        }

坑1:输出整个页面空白

// 如果当new JRBeanCollectionDataSource(auditFlowVOList)为空时,输出整个页面为空白
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(auditFlowVOList));

坑2:输出中文空白
输出中文空白是因为,idea没有pdf模板中的中文字体导致,所以需要引入你在jasper resport中所用的字体文件。

在jasper reports中,右键项目,点击properties,进入fonts。
在这里插入图片描述
在这里插入图片描述
然后就可以在jasper resport中使用你的文件了。
这样还不够。
需要在idea中导入你所用到的字体文件。
先,将字体文件导出为jar包
在这里插入图片描述
导出为jar。
然后,在idea的控制台中,使用以下指令。
mvn install:install-file -Dfile="E:\font.jar" -DgroupId=cjc -DartifactId=cjc -Dversion=cjc -Dpackaging=jar

然后在你的pom文件中引入。
完成!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,我可以回答你关于jasperreports生成报表的问题。jasperreports是一款Java开发的报表工具,可以帮助开发者快速生成各种格式的报表。它提供了多种报表元素,如文本、图像、表格等,可以通过简单的配置来生成报表。此外,jasperreports还支持多语言和多种数据源的连接,非常方便实用。 ### 回答2: JasperReports是一个用于生成报表的开源Java库。它通过使用XML文件定义报表模板,将数据源中的数据填充到模板中,并生成输出格式多样的报表。JasperReports可以生成PDF、HTML、XLS、CSV等多种格式的报表。 使用JasperReports来生成报表一般需要以下几个步骤: 1. 定义报表模板:使用JasperSoft Studio等工具创建或编辑报表模板文件,模板文件以XML格式保存。在模板中,可以指定报表的布局、样式、数据源等信息。 2. 设计数据源:JasperReports支持多种数据源,包括SQL查询、JavaBean、XML文件等。根据实际情况选择合适的数据源,并编写对应的代码或SQL查询语句。 3. 填充数据:通过代码将数据源中的数据填充到报表模板中。可以使用Java代码或JasperReports提供的API来实现数据的填充操作。 4. 生成报表:将填充完数据的报表模板导出为指定的输出格式,如PDF、HTML、XLS等。 使用JasperReports生成报表的好处是灵活性高、可扩展性强。通过使用XML模板定义报表的布局和样式,可以很方便地对报表进行编辑和修改。同时,JasperReports提供了丰富的API和工具,可以满足各种不同的报表生成需求。此外,JasperReports还支持自定义的报表元素和样式,可以根据实际情况进行个性化定制。 总之,JasperReports是一款功能强大且易于使用的报表生成工具,可以帮助开发人员快速、灵活地生成各种格式的报表。无论是简单的报表还是复杂的报表,都可以通过JasperReports来实现。 ### 回答3: Jasper Reports是一种开源的Java报表生成工具,它可以帮助开发者快速、灵活地生成各种格式的报表。Jasper Reports提供了强大的报表设计工具,开发者可以使用该工具来设计报表模板,设置样式、布局等元素,并通过XML文件进行导出、导入和共享。 Jasper Reports的报表生成过程包括三个关键步骤:数据源准备、报表设计和导出。 首先,需要准备数据源。Jasper Reports支持多种数据源,包括数据库、XML文件、Java对象等。开发者可以根据需要选择相应的数据源,通过查询或组装数据,为报表提供数据内容。 接下来,进行报表设计。开发者可以使用Jasper Reports提供的可视化报表设计工具,通过拖拽和设置属性的方式,创建报表模板。在模板中,可以添加文本、图片、表格、图表等元素,并设置相应的样式和布局。还可以通过添加参数、变量、数据源和子报表等功能,实现更为复杂的报表设计。 最后,进行报表导出。通过调用Jasper Reports提供的API,可以将报表导出为多种格式,如PDF、Excel、HTML、XML等。开发者可以根据需求选择合适的导出格式,并通过设置相应的参数,对导出的报表进行格式美化和内容调整。 总的来说,Jasper Reports是一个功能强大、灵活易用的报表生成工具。它通过提供报表设计工具和API,支持多种数据源和导出格式,为开发者提供了丰富的报表设计和生成的功能。无论是简单的表格报表还是复杂的图表分析,Jasper Reports都能满足开发者的需求,并为用户提供清晰、美观的报表展示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值