报表模板生成软件: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. (2)特征点匹配,并求旋转矩阵R和位移向量t

    include头文件中有slamBase.h # pragma once // 各种头文件 // C++标准库 #include <fstream> #include <vector ...

  2. 二,PHP会话机制---session的基本使用

    1,思考:登录网站后,在每个网页都能拿到用户信息 (1) 使用超链接传递用户名,这样太繁琐了,不建议使用 . (2) 使用数据库,每打开一个页面都查询一次用户信息表,这样网页加载速度变慢,用户体验变差 ...

  3. 读DEDECMS找后台目录有感

    本文作者:红日安全团队——Mochazz 早上看了先知论坛的这篇文章:解决DEDECMS历史难题–找后台目录 不得不说作者思路确实巧妙,作者巧妙的利用了Windows FindFirstFile和织梦 ...

  4. node开发环境配置

    node开发环境配置 用处 NodeJS——后台 JavaScript-前台 后台其他语言 1.PHP 2.Java 3.Pythonnode优势 1.性能高 nodejs php 86 1s 1分半 ...

  5. 关于防止表单form重复提交的方式

    表单重复提交: 1.第一种:添加以后刷新页面(刷新的是Servlet) 2.第二种:重复点击提交按钮. * 使用令牌机制:(防止表单重复提交) * 在表单页面中 生成一个令牌 * 将这个令牌保存在se ...

  6. (转)Python科学计算之Pandas详解,pythonpandas

    https://www.cnblogs.com/linux-wangkun/p/5903380.html-------pandas 学习(1): pandas 数据结构之Series https:// ...

  7. (转)教你手工mysql拆库

    原文:http://www.cnblogs.com/cchust/p/3859967.html 互联网网站应用大多采用mysql作为DB存储,限于mysql单机性能的瓶颈,为了支撑更大容量和更大的访问 ...

  8. diskpart 格式化u盘 制作u盘启动盘方法

    1.cmd 2.diskpart 3.list disk 4.select disk [index]   注:[index] 磁盘索引号 5.clean 6.create partition prim ...

  9. django第一课 简单的网页视图

    注意本人django版本2.0      python3.6 第一步:创建自己的django项目 django-admin.py startproject ** 第二步:进入**创建app pytho ...

  10. Android 开发工具类 13_ SaxService

    网络 xml 解析方式 package com.example.dashu_saxxml; import java.io.IOException; import java.io.InputStream ...