报表模板生成软件:iReport 、 润乾、水晶。

一、Jaspersoft iReport Desiginer 5.60 的使用

  1、软件jar包的下载地址与配置

  百度云盘下载链接:https://pan.baidu.com/s/1Ln9ewKMhYuau1bG9EgdUNQ 密码:cspl

  此软件最高仅支持1.7版本的JDK,如果是1.8版本的JDK,需要安装1.7以下的JDK,然后修改配置文件

  配置文件位置 : 安装目录\iReport-5.6.0\etc\ireport.conf,增加以下配置

jdkhome="C:\Program Files\Java\jdk1.7.0_80"

  2、创建模版

如果需要删除不需要的区域,右键选中该区域,然后选择Delete Band

以下三个区域为必须

如需添加文本控件,选择下图中的Static Text

如果控件中有中文,需要添加支持中文的iTextAsain的JAR包,按照下图所示进行配置

指定字体和属性设置,所有使用中文的控件,都必须按照下图所示进行配置.

创建数据源,如果连接Oracle数据库,需要手动指定数据库驱动,配置方式请参考上面配置iTextAsain的JAR包的步骤.

指定SQL语句

从Fields中拖拽需要的数据到模版中的Detail区域

此时可以用鼠标拖动控件到合适的区域,如果需要修改对应的表头,可以直接在Page Header区域进行修改,如下图所示

如果需要添加动态参数,右键单击 Parameter进行添加

修改Parameter的key

修改之后,拖动到合适的区域

至此,模版创建成功

如需预览,点击预览按钮即可

二、 使用Jasper生成PDF

1、导入依赖

 ​​<!-- itext -->
​​<dependency>
  ​​​<groupId>com.lowagie</groupId>
​​​  <artifactId>itext</artifactId>
  ​​​<version>2.1.7</version>
​​</dependency>
​​<dependency>
​​​  <groupId>com.itextpdf</groupId>
  ​​​<artifactId>itext-asian</artifactId>
  ​​​<version>5.2.0</version>
​​</dependency> ​​<!-- groovy -->
​​<dependency>
  ​​​<groupId>org.codehaus.groovy</groupId>
  ​​​<artifactId>groovy-all</artifactId>
​​​  <version>2.2.0</version>
​​</dependency> ​​<!-- jasperreport -->
​​<dependency>
​​​  <groupId>net.sf.jasperreports</groupId>
​​​  <artifactId>jasperreports</artifactId>
​​​  <version>5.2.0</version>
  ​​​<exclusions>
​​​​    <exclusion>
      ​​​​​<groupId>com.lowagie</groupId>
​​​​​      <artifactId>itext</artifactId>
​​​​    </exclusion>
​​​  </exclusions>
​​</dependency>

拷贝iReport设计好的模版到工程中

2、前台代码

增加按钮
{
​​id : 'button-export',
​​ text : '导出PDF',
​​ iconCls : 'icon-undo',
​​ handler : doExportPDF
​}
绑定按钮点击事件
​function doExportPDF() {
​​window.location.href = "../../areaAction_exportPDF.action"
​}

3、java代码

实现Action
 @Autowired
private DataSource dataSource; @Action("areaAction_exportPDF")
public String exportPDF() throws Exception { // 读取 jrxml 文件
String jrxml = ServletActionContext.getServletContext()
.getRealPath("/jasper/area.jrxml");
// 准备需要数据
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("company", "黑马程序员");
// 准备需要数据
JasperReport report = JasperCompileManager.compileReport(jrxml);
JasperPrint jasperPrint = JasperFillManager.fillReport(report,
parameters, dataSource.getConnection()); HttpServletResponse response = ServletActionContext.getResponse();
OutputStream ouputStream = response.getOutputStream();
// 设置相应参数,以附件形式保存PDF
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment; filename=" + FileDownloadUtils
.encodeDownloadFilename("工作单.pdf", ServletActionContext
.getRequest().getHeader("user-agent")));
// 使用JRPdfExproter导出器导出pdf
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
exporter.exportReport();// 导出
ouputStream.close();// 关闭流 return NONE;
}
4、解决字体无法加载的异常
将下载地址中的iTextAsian.jar部署到Maven本地仓库,命令 :
  mvn install:install-file -DgroupId=com.xxxxx -DartifactId=iTextAsain -Dversion=10.2.0.2.0 -Dpackaging=jar -Dfile=路径
将pom文件中的坐标替换
原坐标
​​<dependency>
  ​​​<groupId>com.itextpdf</groupId>
​​​  <artifactId>itext-asian</artifactId>
​​​  <version>5.2.0</version>
​​</dependency>
新坐标,该坐标请根据自己本地仓库的实际情况进行修改
​​<dependency>
​​​  <groupId>com.alpha</groupId>
​​​  <artifactId>itextasain</artifactId>
​​​  <version>10.2.0.2.0</version>
​​</dependency>

三、效果

1、网页端

2、生成的pdf文件:

iReport(模版) 与Jasper(数据填充)生成pdf文档的更多相关文章

  1. ireport图形化界面生成pdf文档

    一.ireport软件安装 1.下载软件的官网 https://community.jaspersoft.com/project/ireport-designer/releases 2.安装软件   ...

  2. Spring Boot集成JasperReports生成PDF文档

    由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲染生成PDF文档.本人文采欠缺,写作能力 ...

  3. 利用Java动态生成 PDF 文档

    利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...

  4. 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器

    置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本 ...

  5. 手把手教你使用 Java 在线生成 pdf 文档

    一.介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票.订单的库存打印单.各种电子签署合同等等,以方便用户查 ...

  6. Aspose.Words操作word生成PDF文档

    Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...

  7. 如何从Windows Phone 生成PDF文档

    我需要从我的Windows Phone应用程序生成PDF. 遗憾的是没有标准的免费的PDF生成库在Windows Phone上运行. 我不得不自己生成PDF,通过直接写入到文件格式. 这竟然是真的很容 ...

  8. 使用PHP生成PDF文档

    原文:使用PHP生成PDF文档 实际工作中,我们要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天我给大家来介绍一款优秀的PDF库,它就是TCPDF,TCPDF是一个用于快 ...

  9. DocFX生成PDF文档

    使用DocFX生成PDF文档,将在线文档转换为PDF离线文档. 关于DocFX的简单介绍使用DocFX生成文档 使用docfx 命令 1.下载 https://github.com/dotnet/do ...

随机推荐

  1. Atcoder Tenka1 Programmer Contest 2019题解

    传送门 \(C\ Stones\) 最后肯定形如左边一段白+右边一段黑,枚举一下中间的断点,预处理一下前缀和就可以了 int main(){ // freopen("testdata.in& ...

  2. MySQL(视图、触发器、函数)

    day61 参考:http://www.cnblogs.com/wupeiqi/articles/5713323.html 视图 视图:给某个查询语句设置别名,日后方便使用               ...

  3. 用switch函数根据选择不同的radio出现不同的视图

    html代码: <!DOCTYPE html> <html> <head> <title></title> <style type=& ...

  4. ngRoute 与ui.router区别

    angular路由 路由 (route) ,几乎所有的 MVC(VM) 框架都应该具有的特性,因为它是前端构建单页面应用 (SPA) 必不可少的组成部分. 那么,对于 angular 而言,它自然也有 ...

  5. Python sys os getpass 包的导入

    块的导入 导入一个py文件,解释器解释该py文件 导入一个包,解释器解释该包下的 init.py 文件 import module 直接导入模块 from module.xx.xx import xx ...

  6. 【LeetCode】414. 第三大的数

    给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2 ...

  7. easyui datagrid里的复选框置灰方法

    easyui datagrid里的复选框置灰方法: $('.datagrid input').prop('disabled',true);//复选框置灰

  8. J01-Java IO流总结一 《异常捕获》

    下面演示java中处理I/O操作时的异常的正确方式,总结自书籍,书名忘啦~ 先看一种不正确的方式 方式一: import java.io.FileInputStream; import java.io ...

  9. Fiddler Web Debugger安装后与浏览器之间的常用设置(辅助爬虫)(图文详解)

    不多说,直接上干货! 怎么让我们的浏览经过代理服务呢?如下来正确设置: 这里有个经验,最好用历史低版本的火狐浏览器.比如 http://ftp.mozilla.org/pub/firefox/rele ...

  10. filebeat+ELK日志系统

    架构图 filebat logstash elasticsearch 基于elasticsearch6.3.2 elasticsearch(一) 之 elasticsearch初识 elasticse ...