【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题

这篇文章,主要介绍JasperReport指定自定义字体文件,解决中文不显示问题。

目录

一、自定义字体文件

1.1、创建字体配置文件

1.2、创建fonts.xml字体文件

1.3、在Jasper Studio中添加字体

1.4、指定模板文件

1.5、案例代码

1.6、运行测试

1.7、服务器部署


一、自定义字体文件

前面几篇文章,介绍了如何使用JasperReport开发报表,可以发现,我们之前的模板文件都是使用的英文,从来没有写过中文,这是因为,默认情况下,JasperReport是不支持显示中文,如果要显示中文,那么我们就需要自己指定采用的字体文件,下面就介绍一下,如何自定义字体文件,显示中文内容。

1.1、创建字体配置文件

在SpringBoot工程中的【src/main/resource】目录下,新建一个【jasperreports_extension.properties】配置文件,这个配置文件是JasperReport的扩展配置文件,在该文件中添加字体相关的配置信息。

# 字体扩展注册工厂类
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
# 自定义的默认字体文件
net.sf.jasperreports.extension.simple.font.families.default=fonts/fonts.xml

1.2、创建fonts.xml字体文件

当前项目的工作空间下(可以在IDEA中指定工作目录路径),创建【fonts】目录,并且新建一个【fonts.xml】字体配置文件,在该文件中指定使用到的一些字体文件路径以及字体名称,如下所示:



    
    
        
        
        
        
        
        
        
        
        
        Identity-H
        
    

在fonts目录下创建对应字体的保存目录,就拿上面的为案例,指定了一个微软雅黑的字体,并且路径是在【fonts/MSYaHei】目录下。那就把我们下载的微软雅黑字体文件,放入这个目录下面,如下图所示:

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第1张图片

图中【working-dir】目录是我IDEA中指定的工作目录,可以自己指定:

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第2张图片

字体文件可以百度几个字体下载网站,例如:https://www.cnziti.cn/。

1.3、在Jasper Studio中添加字体

当我们在制作模板文件的时候,指定的字体文件就要和我们IDEA中使用的一致,不然运行时候,就会报错。打开Jasper Studio,点击【File -> Properties】选项,如下:

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第3张图片

在弹出窗口中,选择【Jaspersoft Studio】,继续选择下面的【Fonts】,这里就是设置字体的,如下所示:

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第4张图片

选择【Using Project Settings】,然后选择【Add】按钮,这个就是添加我们刚刚下载的字体文件:

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第5张图片

在弹出框中,输入字体名称,选择我们刚刚下载的字体文件路径,如下所示:

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第6张图片

点击【Finish】之后,就可以看到我们刚刚添加的字体,之后点击close就可以啦。

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第7张图片

到此,Jasper Studio中字体就添加好啦,下面就是在制作模板文件时候,使用我们刚刚添加的字体就可以。

1.4、指定模板文件

新建一个【FontDemo.jrxml】模板文件,添加几个Static Text、Text Filed组件,可以写几个中文,然后选择字体是微软雅黑,也就是我们刚刚添加的字体。

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第8张图片

模板文件中使用字体文件还是比较简单的,关键是需要确保Jasper模板文件中使用的字体名称,要和我们Java代码中指定的字体相同。

1.5、案例代码

在Java代码中,就可以根据模板文件导出PDF啦,如下所示:

package com.gitcode.demo.web;

import com.gitcode.demo.util.JasperReportsUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @version 1.0.0
 * @Date: 2023/8/26 21:32
 * @Author ZhuYouBin
 * @Description:
 */
@RestController
@RequestMapping("/api/report")
public class FontDemoController {
    
    @GetMapping("/font-demo")
    public String fontDemo(String format) throws Exception {
        ClassPathResource resource = new ClassPathResource("jasper/FontDemo.jasper");
        String templatePath = resource.getPath();
        String fileName = "中文字体案例";
        Map parameters = new HashMap<>();
        parameters.put("name", "Jasper");
        parameters.put("age", 20);
        parameters.put("sex", "男");
        parameters.put("nation", "中国");
        // 执行导出操作
        return JasperReportsUtil.generateReport(templatePath, fileName, format, parameters);
    }
    
}

1.6、运行测试

启动工程,打开浏览器,访问http://localhost:6251/api/report/font-demo?format=pdf地址,之后就可以在工程中,看到生成的PDF文件:

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第9张图片

1.7、服务器部署

当我们把工程打包成jar文件之后,部署到Linux服务的时候,也是需要将字体文件一起放到服务器里面的,不然运行过程中会找不到字体,从而报错。将【font】目录放到和Jar包同级目录位置就可以啦,此时运行Jar文件的时候,就会从Jar的同级目录中寻找【font】字体文件路径。

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题_第10张图片

到此,JasperReport使用中文字体就介绍完啦,公众号回复【Jasper中文字体配置】获取源码。

综上,这篇文章结束了,主要介绍JasperReport指定自定义字体文件,解决中文不显示问题。。

你可能感兴趣的:(【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体)