概述

主要介绍如何根据jasper报表和数据生成pdf文档,中文字体问题的解决方案和日期时间的格式化输出。

iReport版本:5.2.0

生成pdf文档

maven依赖

<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.2.0</version>
</dependency>

完整的依赖树:

[INFO] +- net.sf.jasperreports:jasperreports:jar:5.2.0:compile

[INFO] |  +- commons-beanutils:commons-beanutils:jar:1.8.0:compile

[INFO] |  +- commons-digester:commons-digester:jar:2.1:compile

[INFO] |  +- com.lowagie:itext:jar:2.1.7.js2:compile

[INFO] |  |  +- bouncycastle:bcmail-jdk14:jar:138:compile

[INFO] |  |  +- bouncycastle:bcprov-jdk14:jar:138:compile

[INFO] |  |  \- org.bouncycastle:bctsp-jdk14:jar:1.38:compile

[INFO] |  |     +- org.bouncycastle:bcprov-jdk14:jar:1.38:compile

[INFO] |  |     \- org.bouncycastle:bcmail-jdk14:jar:1.38:compile

[INFO] |  +- jfree:jcommon:jar:1.0.15:compile

[INFO] |  +- jfree:jfreechart:jar:1.0.12:compile

[INFO] |  +- xml-apis:xml-apis:jar:1.3.02:compile

[INFO] |  +- eclipse:jdtcore:jar:3.1.0:compile

[INFO] |  +- org.codehaus.castor:castor:jar:1.2:compile

[INFO] |  +- com.fasterxml.jackson.core:jackson-core:jar:2.0.5:compile

[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.0.5:compile

[INFO] |  \- com.fasterxml.jackson.core:jackson-annotations:jar:2.0.5:compile

[INFO] \- sinobest:font-song:jar:1.0:compile

其中,font-song jar是自制的字体jar包,下载地址:http://pan.baidu.com/s/1NzMkm

基于sql的数据

1. 配置数据源

2. 配置SQL

 

每一个结果字段作为一个Field。

3. 在程序中获取文档内容

public void test() throws JRException, IOException, SQLException {
InputStream is = Main.class.getClassLoader().getResourceAsStream("reports/XZFYSQS-query.jasper");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("SQD_SYSID", "4028ca9850d19ccb0150d19cd1ae0000"); Connection conn = ...;
byte[] datas = JasperRunManager.runReportToPdf(is, parameters, conn);
conn.close();
}

基于JavaBean的数据

1. 新建JavaBean

package cn.sinobest.jzpt.fzywgz.reports.pojo;

public class XZFYSQS_RY {
private java.lang.String SQR;
private java.lang.String XB;
private java.sql.Timestamp CSNY;
......
}

2. 在iReport中添加编译路径

3. 在iReport中加入Field

4. 在程序中获取文档内容

public void test() throws JRException, IOException {
InputStream is = Main.class.getClassLoader()
.getResourceAsStream(reports/XZFYSQS-javabean.jasper); List<XZFYSQS_RY> ryList = new ArrayList<XZFYSQS_RY>();
ryList.add(...); JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(
ryList);
byte[] datas = JasperRunManager.runReportToPdf(is, null, dataSource);
...
}

中文字体解决方案

在编程时根据模板生成pdf内容时,可能出现中文打印不出来的问题;解决方案如下:

  1. 加入字体jar包:font-song

    http://pan.baidu.com/s/1NzMkm
  2. 中文字体,使用宋体、仿宋、方正小标宋简体
  3. 设置中文组件的属性

    simsun.ttf来自于font-song.jar

  4. 纠正模板名称

    我曾以XZFYSQS_RY.jrxml命名,编译之后得XZFYSQS_RY.jasper,打印不出中文

    以XZFYSQS-RY.jrxml命名,编译之后得XZFYSQS-RY.jasper,可以打印中文

    以XZFYSQS_01.jrxml命名,编译之后得XZFYSQS_01.jasper,可以打印中文

日期时间格式化输出

选中TextField - 右键 - Field pattern

对于日期类型,MM则始终显示2位月份,M则根据需要显示1或2位;其他域类推。

最新文章

  1. Spring常见问题-通配符的匹配很全面, 但无法找到元素 &#39;aop:aspectj-autoproxy&#39; 的声明
  2. NIO 连接
  3. 浏览器退出之后php还会继续执行么?
  4. android自定义控件(1)-点击实现开关按钮切换
  5. Spring+Struts2/Hibernate 学习笔记
  6. 彻底解决Google浏览器CSS居中问题
  7. python 学习笔记3(循环方式;list初始化;循环对象/生成器/表推导;函数对象;异常处理)
  8. 三星智能手机如何运用Smart Switch?
  9. VB6-AppendToLog 通过API写入日志
  10. Mate8的麒麟950怎么样? 4个问题待解决
  11. 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol
  12. 【转】Understanding and Using rem Units in CSS
  13. TortoiseGit 自动登录
  14. django-将数据库数据转换成JSON格式(ORM和SQL两种情况)
  15. JavaScript 的使用基础总结③
  16. bzoj 2209 [Jsoi2011]括号序列 平衡树
  17. [LeetCode] Longest Word in Dictionary through Deleting 删除后得到的字典中的最长单词
  18. idea运行多模块的maven项目,工作目录不一致的问题
  19. PHP中的面向对象思想
  20. node.js学习二---------------------同步API和异步API的区别

热门文章

  1. redis 模糊查找keys
  2. [bzoj1005][HNOI2008]明明的烦恼-Prufer编码+高精度
  3. 基于 python imageai 对象检测 目标检测 识别 视频
  4. python初步学习-python控制流
  5. vuejs怎么在服务器部署?
  6. 【Python学习笔记】Coursera之PY4E学习笔记——File
  7. 64_g4
  8. pxc群集搭建
  9. 如何用jQuery获得radio的值
  10. KettleDB连接jdbc连接池参数介绍