zoukankan      html  css  js  c++  java
  • iReport学习笔记

    概述

    主要介绍如何根据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. 配置数据源

    config-ds

    2. 配置SQL

    config-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中添加编译路径

    add-class

    3. 在iReport中加入Field

    add-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. 设置中文组件的属性
      set-encoding
      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

    time-pattern

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

  • 相关阅读:
    随笔—邀请赛前训— Codeforces Round #330 (Div. 2) B题
    随笔—邀请赛前训— Codeforces Round #330 (Div. 2) Vitaly and Night
    General Problem Solving Techniques [Examples]~C
    General Problem Solving Techniques [Examples]~A
    General Problem Solving Techniques [Beginner-1]~B
    General Problem Solving Techniques [Beginner-1]~A
    General Problem Solving Techniques [Beginner-1]~E
    General Problem Solving Techniques [Beginner-1]~F
    2015 HUAS Summer Contest#5~C
    2015 HUAS Summer Contest#5~B
  • 原文地址:https://www.cnblogs.com/ywjy/p/5048084.html
Copyright © 2011-2022 走看看