Jaspersoft Studio(报表设计器)中文乱码问题的解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jaspersoft Studio(报表设计器)中文乱码问题的解决方法相关的知识,希望对你有一定的参考价值。

参考技术A Jaspersoft Studio 本身不支持中文字符,所以如果报表中存在中文字符,就会变成一个一个的小方块:

有两种解决方案:

不要使用 “static text”,因为它不会对内容进行转换。这时要替换为 "text field" 组件,并把汉字对应的 unicode 拷贝过来:

3.调整字体格式

点击顶部工具栏,选择相应的中文字体,并设置字体大小:

可惜这里的字体最大只能到 26。

4.运行测试

看到漂亮的中文字是不是很开心呀O(∩_∩)O~

使用 unicode 固然可以解决中文字符显示问题,但还是觉得转换麻烦,有没有更好的解决方法呀?当然有的啊O(∩_∩)O~

这里的示例字体(ttf 格式)用的是 微软雅黑 ,当然可以使用任意字体啦O(∩_∩)O~

window -> preference

打开字体管理器:

点击右边的 Add,添加字体。只需要输入字体名称并选择字体所在的路径:

设置好后,点击 next -> next ->finish,就可以啦O(∩_∩)O~

next 后面的设置,一个与 html 字体有关,另一个与本地化字符有关,一般很少用到的啦

我们使用新的 static text 组件,输入中文字符试试:

运行后:

现在连 static text 组件都支持啦,是不是很厉害呀O(∩_∩)O~

注意:必须要用新的 static text 组件,如果只是修改模板中已存在的 static text 组件是不生效的,显然 Jaspersoft Studio 不会对旧的组件应用新的字体库。

点击 static text 组件,就可以顶部的中间位置找到字体设置项,进行微调啦:

PDF报表Jasperreports+jaspersoft studio快速入门


目录

  • ​​一、JasperReport简介​​
  • ​​二、 JasperReport的开发步骤​​
  • ​​1.生命周期​​
  • ​​2.执行流程​​
  • ​​三、模板工具Jaspersoft Studio​​
  • ​​1.概述​​
  • ​​2.安装配置​​
  • ​​3.面板介绍​​
  • ​​4.基本使用​​
  • ​​4.1 模板制作​​
  • ​​4.2 编译模板​​
  • ​​四、入门案例​​
  • ​​1. 制作模板​​
  • ​​1.1 创建新模板,删除不需要的Band​​
  • ​​1.2 画边框和线​​
  • ​​1.3 添加几个静态的文本​​
  • ​​1.4 添加变量​​
  • ​​1.5 在右下角修改变量名称​​
  • ​​1.6 使用变量​​
  • ​​1.7 有中文的设置字体为==华文宋体==​​
  • ​​1.8 保存后编辑​​
  • ​​2. 环境准备​​
  • ​​2.1 引依赖​​
  • ​​2.2 准备中文字体资源文件​​
  • ​​3. 测试代码​​

一、JasperReport简介

【PDF报表】Jasperreports+jaspersoft


官网地址:​​传送门​

JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。只需要将JasperReport引入工程中即可完成PDF报表的编译、显示、输出等工作。

在开源的JAVA报表工具中,JasperReport发展是比较好的,比一些商业的报表引擎做得还好,如支持了十字交叉报表、统计报表、图形报表,支持多种报表格式的输出,如PDF、RTF、XML、CSV、XHTML、TEXT、DOCX以及OpenOffice。

数据源支持更多,常用 JDBCSQL查询、XML文件、CSV文件、HQL(Hibernate查询),HBase,JAVA集合等。还允许你义自己的数据源,通过JASPER文件及数据源,JASPER就能生成最终用户想要的文档格式。

二、 JasperReport的开发步骤

1.生命周期

通常我们提到PDF报表的时候,浮现在脑海中的是最终的PDF文档文件。在JasperReports中,这只是报表生命周期的最后阶段。通过JasperReports生成PDF报表一共要经过三个阶段,我们称之为 JasperReport的生命周期,

这三个阶段为:

  • 设计(Design)阶段、
  • 执行(Execution)阶段
  • 输出(Export)阶段,如下图所示:

【PDF报表】Jasperreports+jaspersoft


设计阶段(Design):所谓的报表设计就是创建一些模板,模板包含了报表的布局与设计,包括执行计算的复杂公式、可选的从数据源获取数据的查询语句、以及其它的一些信息。模板设计完成之后,我们将模板保存为JRXML文件(JR代表JasperReports),其实就是一个XML文件。

执行阶段(Execution): 使用以JRXML文件编译为可执行的二进制文件(即.Jasper文件)结合数据进行执行,填充报表数据

输出阶段(Export):数据填充结束,可以指定输出为多种形式的报表

2.执行流程

【PDF报表】Jasperreports+jaspersoft

1、JRXML:报表填充模板,本质是一个XML.

JasperReport已经封装了一个dtd,只要按照规定的格式写这个xml文件,那么jasperReport就可以将其解析最终生成报表,但是jasperReport所解析的不是我们常见的.xml文件,而是.jrxml文件,其实跟xml是一样的,只是后缀不一样。

2、Jasper:由JRXML模板编译生成的二进制文件,用于代码填充数据。

解析完成后JasperReport就开始编译.jrxml文件,将其编译成.jasper文件,因为JasperReport只可以对.jasper文件进行填充数据和转换,这步操作就跟我们java中将java文件编译成class文件是一样的

3、Jrprint:当用数据填充完Jasper后生成的文件,用于输出报表。

这一步才是JasperReport的核心所在,它会根据你在xml里面写好的查询语句来查询指定是数据库,也可以控制在后台编写查询语句,参数,数据库。在报表填充完后,会再生成一个.jrprint格式的文件(读取jasper文件进行填充,然后生成一个jrprint文件)

4、Exporter:决定要输出的报表为何种格式,报表输出的管理类。

5、JasperReport可以输出多种格式的报表文件,常见的有Html,PDF,xls等

综上,我们只需要关注四个点

  • 制作报表模板
  • 模板编译
  • 构造数据
  • 填充模板数据

三、模板工具Jaspersoft Studio

1.概述

Jaspersoft Studio是JasperReports库和JasperReports服务器的基于Eclipse的报告设计器; 它可以作为Eclipse插件或作为独立的应用程序使用。Jaspersoft Studio允许您创建包含图表,图像,子报表,交叉表等的复杂布局。您可以通过JDBC,TableModels,JavaBeans,XML,Hibernate,大数据(如Hive),CSV,XML / A以及自定义来源等各种来源访问数据,然后将报告发布为PDF,RTF, XML,XLS,CSV,HTML,XHTML,文本,DOCX或OpenOffice。

Jaspersoft Studio 是一个可视化的报表设计工具,使用该软件可以方便地对报表进行可视化的设计,设计结果为格式.jrxml 的XML 文件,并且可以把.jrxml 文件编译成.jasper 格式文件方便 JasperReport 报表引擎解析、显示。

2.安装配置

官网:​​https://community.jaspersoft.com/community-download​

【PDF报表】Jasperreports+jaspersoft


傻瓜式安装…

3.面板介绍

【PDF报表】Jasperreports+jaspersoft


Report editing area (主编辑区域)中,您直观地通过拖动,定位,对齐和通过 Designer palette(设计器调色板)对报表元素调整大小。JasperSoft Studio 有一个多标签编辑器,Design,Source和Preview:

Design tab:当你打开一个报告文件,它允许您以图形方式创建报表选中

Source tab:包含用于报表的 JRXML 源代码。

Preview tab:允许在选择数据源和输出格式后,运行报表预览。

Repository Explorer view:包含 JasperServer 生成的连接和可用的数据适配器列表

Project Explorer view:包含JasperReports 的工程项目清单

Outline view:在大纲视图中显示了一个树的形式的方式报告的完整结构。

Properties view:通常是任何基于 Eclipse 的产品/插件的基础之一。它通常被填充与实际所选元素的属性的信息。这就是这样,当你从主设计区域(即:一个文本字段)选择一个报表元素或从大纲,视图显示了它的信息。其中一些属性可以是只读的,但大部分都是可编辑的,对其进行修改,通常会通知更改绘制的元素(如:元素的宽度或高度)。

Problems view:显示的问题和错误,例如可以阻断报告的正确的编译。

Report state summary 提供了有关在报表编译/填充/执行统计用户有用的信息。错误会显示在这里

4.基本使用

4.1 模板制作

(1)打开Jaspersoft Studio ,新建一个project, 步骤: File -> New -> Project-> JasperReportsProject

【PDF报表】Jasperreports+jaspersoft


(2) 新建一个Jasper Report模板,在 Stidio的左下方Project Explorer 找到刚才新建的Project (我这里新建的是DemoReport),步骤:项目右键 -> New -> Jasper Report

【PDF报表】Jasperreports+jaspersoft

(3)选择 Blank A4 (A4纸大小的模板),然后 Next 命名为test01.jrxml.

【PDF报表】Jasperreports+jaspersoft


如图所示,报表模板被垂直的分层,每一个部分都是一个Band,每一个Band的特点不同:

【PDF报表】Jasperreports+jaspersoft

Title(标题):只在整个报表的第一页的最上端显示。只在第一页显示,其他页面均不显示。

Page Header(页头):在整个报表中每一页都会显示。在第一页中,出现的位置在 Title Band的下面。在除了第一页的其他页面中Page Header 的内容均在页面的最上端显示。

Page Footer(页脚):在整个报表中每一页都会显示。显示在页面的最下端。一般用来显示页码。

Detail 1(详细):报表内容,每一页都会显示。

Column Header(列头):Detail中打印的是一张表的话,这Column Header就是表中列的列头。

Column Footer(列脚):Detail中打印的是一张表的话,这Column Footer就是表中列的列脚。

Summary(统计):表格的合计段,出现在整个报表的最后一页中,在Detail 1 Band后面。主要是用来做报表的合计显示。

可以通过Delete键删除无用的部分,双击空白会自动去除多余的空白部分

4.2 编译模板

右键单击模板文件 -> compile Report 对模板进行编译,生成.jasper文件

【PDF报表】Jasperreports+jaspersoft


也可以全部编译:

【PDF报表】Jasperreports+jaspersoft

四、入门案例

需求:

【PDF报表】Jasperreports+jaspersoft

1. 制作模板

1.1 创建新模板,删除不需要的Band

【PDF报表】Jasperreports+jaspersoft

1.2 画边框和线

【PDF报表】Jasperreports+jaspersoft

1.3 添加几个静态的文本

【PDF报表】Jasperreports+jaspersoft

1.4 添加变量

【PDF报表】Jasperreports+jaspersoft

1.5 在右下角修改变量名称

【PDF报表】Jasperreports+jaspersoft

1.6 使用变量

【PDF报表】Jasperreports+jaspersoft


效果:

【PDF报表】Jasperreports+jaspersoft

1.7 有中文的设置字体为华文宋体

【PDF报表】Jasperreports+jaspersoft

1.8 保存后编辑

【PDF报表】Jasperreports+jaspersoft


待会将编译后的文件,复制到Java项目中

2. 环境准备

2.1 引依赖

<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.16.0</version>
<exclusions>
<exclusion>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>

2.2 准备中文字体资源文件

jasperReports本身对中文的支持不够好,所以如果涉及到中文,需要自己准备中文的资源,现在以“华文宋体为例”

ttf字体文件位置:​​C:\\WINDOWS\\Fonts​

【PDF报表】Jasperreports+jaspersoft

fonts.xml

<?xml version="1.0" encoding="UTF-8"?>

<fontFamilies>
<fontFamily name="华文宋体">
<normal>stsong/stsong.TTF</normal>
<bold>stsong/stsong.TTF</bold>
<italic>stsong/stsong.TTF</italic>
<boldItalic>stsong/stsong.TTF</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">华文宋体, Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">华文宋体, Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
</fontFamilies>

jasperreports_extension.properties

net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.lobstertwo=stsong/fonts.xml

【PDF报表】Jasperreports+jaspersoft

3. 测试代码

效果:

【PDF报表】Jasperreports+jaspersoft


以上是关于Jaspersoft Studio(报表设计器)中文乱码问题的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

说说如何使用 Jaspersoft Studio 设计你的第一张报表

Jaspersoft studio工具(报表生成工具)之 设置PDF 的开发

PDF报表Jasperreports+jaspersoft studio快速入门

jaspersoft studio6.x 设计医院检查报告单样式

如何利用Jaspersoft iReport Designer创建表格

jaspersoft studio6.x 设计医院超声检查报告单