iReport(模版) 与Jasper(数据填充)生成pdf文档
报表模板生成软件: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文档的更多相关文章
- ireport图形化界面生成pdf文档
一.ireport软件安装 1.下载软件的官网 https://community.jaspersoft.com/project/ireport-designer/releases 2.安装软件 ...
- Spring Boot集成JasperReports生成PDF文档
由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲染生成PDF文档.本人文采欠缺,写作能力 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- 自动把动态的jsp页面(或静态html)生成PDF文档,并且上传至服务器
置顶2017年11月06日 14:41:04 阅读数:2311 这几天,任务中有一个难点是把一个打印页面自动给生成PDF文档,并且上传至服务器,然而公司框架只有手动上传文档,打印时可以保存为PDF在本 ...
- 手把手教你使用 Java 在线生成 pdf 文档
一.介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票.订单的库存打印单.各种电子签署合同等等,以方便用户查 ...
- Aspose.Words操作word生成PDF文档
Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...
- 如何从Windows Phone 生成PDF文档
我需要从我的Windows Phone应用程序生成PDF. 遗憾的是没有标准的免费的PDF生成库在Windows Phone上运行. 我不得不自己生成PDF,通过直接写入到文件格式. 这竟然是真的很容 ...
- 使用PHP生成PDF文档
原文:使用PHP生成PDF文档 实际工作中,我们要使用PHP动态的创建PDF文档,目前有许多开源的PHP创建PDF的类库,今天我给大家来介绍一款优秀的PDF库,它就是TCPDF,TCPDF是一个用于快 ...
- DocFX生成PDF文档
使用DocFX生成PDF文档,将在线文档转换为PDF离线文档. 关于DocFX的简单介绍使用DocFX生成文档 使用docfx 命令 1.下载 https://github.com/dotnet/do ...
随机推荐
- Java Web相关技术(汇聚页)
Java Web相关技术(汇聚页) 初学Java Web(2)——搭建Java Web开发环境
- Java Web之Servlet中response、request乱码问题解决
Java Web之Servlet中response.request乱码问题解决 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...
- Java并发(二)-实现同步
并发带来的问题 先看一个单例类,后文中都会用到: public class SimpleWorkingHardSingleton { private static SimpleWorkingHardS ...
- C#数据库连接方法
一:C# 连接SQL数据库 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myP ...
- FlowPortal-BPM——功能:判断数据库表中字段是否重复并阻止提交或保存
一.JS添加代码,判断是否有OnSubmit事件 文件位置:YZSoft/Forms/src/Validator.js //=====判断是否有OnSubmit事件===== if (typeof ( ...
- tomcat启动(六)Catalina分析-StandardServer.start()
从链接 Tomcat中组件的生命周期管理公共接口Lifecycle 可以知道调用的是StandardServer.startInternal() @Override protected void st ...
- 一次tomcat数据乱码事件
一次环境变量出错导致的tomcat数据乱码事件 1.1 事件起因 由于业务的调整,我们需要将在A服务器上的后台系统迁移到B服务器上的后台,我们选择在下班后进行迁移,因为那个时间点,后台系统已经几乎没有 ...
- Nodejs学习笔记(十)—与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门
简介 MongoDB 开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序:高伸缩性: NoSQL毕竟还处于发展阶段,也有说它的各种问题的:http://coolshel ...
- 笔记三:python乱码深度剖析一
一:学习内容 python编码转换 python乱码原因深入解析 二:python编码转换 1. Python内部字符串一般都是Unicode编码,代码中字符串的默认编码与代码文件本身的编码是一致的. ...
- rake aborted! You have already activated rake 10.1.0, but your Gemfile requires rake 10.0.3. Using bundle exec may solve this.
问题: wyy@wyy:~/moumentei-master$ rake db:createrake aborted!You have already activated rake 10.1.0, b ...