概述

主要介绍如何根据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位;其他域类推。

iReport学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. 【BZOJ】1270 [BeijingWc2008]雷涛的小猫

    [算法]DP [题解]f1[i]表示第i棵树当前高度能得到的最多果子数 f2[i]表示高度i能得到的最多果子数. 于是有: f1[j]=max(f1[j],f2[i+delta])+mp[j][i]; ...

  2. Mac 上真机调试cocos2d-x-3.16的test程序

    文章比较长,一个算是新手又不是新手的程序员的解决过程. 一 xcode中打开项目 首先,下载完成cocos2d-x-3.16之后,解压,然后在根目录build目录下双击cocos2d_tests.xc ...

  3. Spring Cloud的基本认识和使用Spring Cloud的基本教程(山东数漫江湖)

    认识Spring Cloud Spring Cloud简单来说就是一个微服务相关的框架,至于什么是微服务,简单来说就是一个整体项目由多个单独运行的小项目构成,每个小项目负责一个或多个功能,每个小项目有 ...

  4. perl6中的hash定义(1)

    ,,,); say %hash; , b => ); say %hash2; my %hash3 = (:name('root'), :host('localost')); say %hash3 ...

  5. Vuex 基本概念

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 每一个 Vuex 应用的核心就是 stor ...

  6. OPENSOLARIS source

    http://blog.csdn.net/nemo2011/article/details/8543220 http://fxr.watson.org/fxr/source/?v=OPENSOLARI ...

  7. socket.io入门整理

    我自己在用socket.io开发,对官方网站上的文档,进行简单的整理,然后自己写了一个简单的聊天程序. 最最开始 先安装socket.io: 1 npm install socket.io 利用Nod ...

  8. 003 CopyOnWriteArrayList原理

    聊聊并发-Java中的Copy-On-Write容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候 ...

  9. HDU 6118 度度熊的交易计划 最大费用可行流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6118 题意:中文题 分析: 最小费用最大流,首先建立源点 s ,与超级汇点 t .因为生产一个商品需要 ...

  10. C基础 大文件读取通过标准库

    引言 - 问题的构建 C大部分读取文件的时候采用fgetc, 最近在使用过程中发现性能不是很理想.都懂得fgetc每次只能读取一个字符, IO操作太频繁. 所以性能低. 本文希望通过标准库函数frea ...