接着上一次所说的,没看过的可跳转
Jasper(1)——入门

第一阶段:初步导出PDF

Jasper报表设计

点击 Static Text,并拖动到 title 位置

然后双击此框,根据需要修改,可看下图

修改好后可以调一下蓝线(各个band的高度)或者如图所示

或者如下图修改

接着Page Header我随便弄了点中文,跟title差不多
在弄Column Header和Detail部分之前,先做点东西~
outline视图,右键field -> Create Field
你会看到如下图的亚子

比如我这个field是id,类型为Integer,看String是不符的,因此如下图操作

这样,id列名就创好啦~接下来如法炮制,创建name和school列名,两者都是String类型
接下来,我们把它们拖动到Detail部分,然后慢慢调整弄整齐
PS:拖到Detail的时候,Column Header也对应有一个框(Static Text)!

其实,看到图中,是否会有问“$F{id}”是啥意思?
其实Detail的框是Text Field,双击一看,如图

Column Footer我就随便写了哈,不展示了
Page Footer一般是写页码之类的,我就用个函数,如下图所示

Summary部分我这边加一个入参,这个入参创建参考上面的field即可

这样一个报表就完成啦~可以预先浏览


这里就是对应该xml的源码

编译该文件

这样设计报表部分完成!

Java代码导出部分

本次我用Springboot来进行pdf导出
文件目录大概是这样

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>jasperdemo</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.8</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>5.6.1</version><exclusions><exclusion><groupId>org.olap4j</groupId><artifactId>olap4j</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.olap4j</groupId><artifactId>olap4j</artifactId><version>0.9.7.309-JS-3</version></dependency><!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><!-- https://mvnrepository.com/artifact/jfree/jcommon --><dependency><groupId>jfree</groupId><artifactId>jcommon</artifactId><version>1.0.15</version></dependency><!-- https://mvnrepository.com/artifact/jfree/jfreechart --><dependency><groupId>jfree</groupId><artifactId>jfreechart</artifactId><version>1.0.12</version></dependency><!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-all --><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy-all</artifactId><version>2.0.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

本次我将用模拟数据来演示,创建一个Student类

package com.copa.domain;import lombok.AllArgsConstructor;
import lombok.Data;/*** @author copa* @createDate 2021-07-25 21:51* @function*/
@Data
@AllArgsConstructor
public class Student {private Integer id;private String name;private String school;
}

controller

package com.copa.controller;import com.copa.domain.Student;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;/*** @author copa* @createDate 2021-07-25 21:02* @function 导出pdf*/
@RestController
public class TestController {@RequestMapping(value = "/pdf1")public void pdf1(Map<String, Object> parameters,HttpServletResponse response) throws IOException {ServletOutputStream os = response.getOutputStream();try {ArrayList<Student> list = new ArrayList<>();for (int i = 1; i <= 40; i++) {list.add(new Student(i, "copa" + i, i <= 20 ? "一中" : "二中"));}JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);parameters = parameters == null ? new HashMap<>() : parameters;parameters.put("summary", "我是summary~");ClassPathResource resource = new ClassPathResource("jasper/demo1.jasper");response.setContentType("application/pdf");InputStream jasperStream = resource.getInputStream();JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource);JasperExportManager.exportReportToPdfStream(jasperPrint, os);} catch (JRException e) {e.printStackTrace();} finally {os.flush();}}
}

那么,启动项目,查看效果
http://localhost:8080/pdf1

看起来…好像没边框很别扭,那么我们返回去加边框

重新编译,覆盖文件,再次尝试~

这样,边框就出来了~但是,有没有看到有些内容没显示的o(╥﹏╥)o
这是…中文的问题…因为Jasper它没考虑到中文,查看它的源码可知

第二阶段:解决中文问题

首先,从网上找字体,比如下图

然后这里添加字体


这样就添加好字体了,然后给显示中文的都换上这个字体

然后编译并覆盖
在java代码这一块,创建下图几个文件

ttf文件是你在报表设计时用到的字体文件
font.xml

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies><fontFamily name="是微软雅黑吖"><normal>jasper/fonts/msyh.ttf</normal><bold>jasper/fonts/msyh.ttf</bold><italic>jasper/fonts/msyh.ttf</italic><boldItalic>jasper/fonts/msyh.ttf</boldItalic><pdfEncoding>Identity-H</pdfEncoding><pdfEmbedded>true</pdfEmbedded><exportFonts><export key="net.sf.jasperreports.html">'是微软雅黑吖', Arial, Helvetica, sans-serif</export><export key="net.sf.jasperreports.xhtml">'是微软雅黑吖', Arial, Helvetica, sans-serif</export></exportFonts></fontFamily>
</fontFamilies>

jasperreports_extension.properties

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.dejavu=jasper/fonts/fonts.xml

添加完成后,再次运行
http://localhost:8080/pdf1
这样就成功啦~

底部也对应显示~

这样导出PDF报表就完成啦~
O(∩_∩)O~
项目地址:https://gitee.com/copaa/jasperdemo
导航栏:
Jasper(3)——制作图表报表
Jasper(4)——制作分组报表
Jasper(5)——制作父子报表
Jasper(6)——小技巧& 各种bug(有缘再补充)

Jasper(2)——简单使用导出PDF报表相关推荐

  1. asp.net简单实现导出excel报表

    关于导出excel报表,网上也是一搜一大把.整理一下,无非就是几种思路,有利用安装excel软件或插件的服务器直接生成,或者直接在客户端生成(通常都是利用excel软件或插件直接在浏览器生成).反正万 ...

  2. Tableau自动导出pdf报表作为附件自动发送邮件-BI自动化。

    一.目的: 1.每天定时从tableau导出pdf报表 2.每天自动定时发送邮件 二.实现的过程: 1.首先利用windows自带的记事本写好bat批处理文件,更多tableau可以看tableau ...

  3. jasper在JSP中导出pdf和xls

    环境配置 1  正确安装配置 java 的jdk 2 将ireport放到c:/ireport 3 将ant放到c:/ant(我用的是bea的ant路径是D:/bea/weblogic81/serve ...

  4. jasperreports导出pdf报表时粗体的显示问题

    最近一直在做报表,用的是iReport3.7.3和jasperReport3.7.3,在导出pdf形式的报表时,文字的粗体效果出不来, 弄了大半天,查阅了很多资料,试了很多种方法,效果都不理想.下面总 ...

  5. Java中导入/导出excel,导出pdf报表信息

    1.项目中经常需要用到报表生成,信息导入数据库的功能.主要有以下几种. 2.其中比较简单的是 外部数据无需处理直接 导入数据库中,这种比较简单.直接利用Navicat数据库工具 导入外部.示例如下 1 ...

  6. Winform中使用FastReport实现简单的自定义PDF导出

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  7. SpringBoot导出pdf文件学习

    我先去网上去搜了一波,发现网上很大一部分博客都是将如何导出pdf模板的,就是先制作一张pdf模板,把固定不变的地方先写好,把需要改变的地方留白并设置参数,然后在代码里为参数赋值就行了,这种方式很简单, ...

  8. Java生成PDF报表文件

    Java生成PDF报表文件 视频出处:https://www.bilibili.com/video/BV1Bo4y117zV?p=254 资源文件:链接:https://pan.baidu.com/s ...

  9. Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.

    在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本都 ...

最新文章

  1. gis中的擦除_擦除—帮助 | ArcGIS for Desktop
  2. thinkphp url缩短
  3. CVE-2017-8890漏洞分析与利用(Root Android 7.x)
  4. java中map集合的修改_map集合修改其中元素(示例代码)
  5. boost::mp11::mp_size相关用法的测试程序
  6. boost::hana::reverse_fold用法的测试程序
  7. 如何linux网页修改回80端口,linux下如何修改iptables开启80端口
  8. 【模糊综合评价原理与案例】
  9. 【CAD】机械类制图实用功能总结
  10. 微擎支付返回商户单号_ThinkPHP6对接实现微信H5支付
  11. 微信公共号开发教程java版——微信网页授权(八)
  12. [LCT BZOJ]2959: 长跑
  13. antd日期组件配置了中文后还是显示英文的解决过程
  14. mysql中两位小数点_mysql 保留两位小数函数
  15. 基于python的阴阳师后台辅助
  16. WordPress图片模糊问题
  17. WifiManager详解
  18. 随机信号处理笔记 - ING
  19. Keil软件添加新源文件
  20. WGCNA:概念初探

热门文章

  1. 服务器上面显示横杠,系统开机左上角显示一横杠一直闪没法系统
  2. Java 运算符中 前++ 和后++ 的区别详解
  3. LTE-5G学习笔记18--5G关键技术(想学更多快进群)
  4. 压力传感器与压力变送器的区别
  5. 决策树与K-近邻分类随堂笔记(二)
  6. multisim变压器反馈式_基于Multisim的负反馈放大电路仿真分析
  7. 【SIP教程】 SDP(Session Description Protocol)会话描述协议
  8. 9月27日上市公司重大事项公告最新快递
  9. C#实现改变图片的像素
  10. mysql mmm 官方_mysql mmm