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 ...
随机推荐
- 換根lca
假設我們要求u,v,在根為rt情況下的lca 則lca為lca(u,v),lca(u,rt),lca(v,rt)中的深度的最大值
- AQS源码泛读,梳理设计流程(jdk8)
一.AQS介绍 AQS(AbstractQueuedSynchronizer)抽象队列同步器,属于多线程编程的基本工具:JDK对其定义得很详细,并提供了多种常用的工具类(重入锁,读写锁,信号量,Cyc ...
- C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇)
C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇) 名词解释:apxs apxs is a tool for building and installi ...
- (转)防止人为误操作MySQL数据库技巧一例
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1321061 防止人 ...
- (转)IBM AIX系统为rootvg实现镜像
IBM AIX系统为rootvg实现镜像 AIX系统安装的时候,没有选择安装镜像,因此在系统安装完成后,出于安全方面的考虑,决定为rootvg创建镜像. 工具/原料 AIX rootvg lspv c ...
- python中使用eval() 和 ast.literal_eval()的区别 分类: Python 2015-05-11 15:21 1216人阅读 评论(0) 收藏
eval函数在python中做数据类型的转换还是很有用的.它的作用就是把数据还原成它本身或者是能够转化成的数据类型. 那么eval和ast.literal_val()的区别是什么呢? eval在做计算 ...
- 关于Oracle中的字符的比较
1.Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个: 函数来说明: CREATE OR REPLACE FUNCTION MinOrMax(para1 ...
- C/C++ -- Gui编程 -- Qt库的使用 -- HelloWorld
1.纯代码写对话框HelloWorld 创建空Qt工程,添加C++源文件main.cpp 需要设置编码以支持中文 -----源代码main.cpp----- #include <QApplica ...
- udgrade rubygems-update
gem install rubygems-update update_rubygems gem update --system gem install rubygems-bundler
- 全连接层(FC)与全局平均池化层(GAP)
在卷积神经网络的最后,往往会出现一两层全连接层,全连接一般会把卷积输出的二维特征图转化成一维的一个向量,全连接层的每一个节点都与上一层每个节点连接,是把前一层的输出特征都综合起来,所以该层的权值参数是 ...