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

这篇具有很好参考价值的文章主要介绍了【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】字体配置文件,在该文件中指定使用到的一些字体文件路径以及字体名称,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
    <!--
        可以配置多个字体
        name 属性:指定字体名称,这里的字体名称在 JasperReport 模板文件中使用的要一致,才能够匹配上
    -->
    <fontFamily name="MSYaHei">
        <!-- 正常字体路径 -->
        <normal><![CDATA[fonts/MSYaHei/MSYaHei.ttf]]></normal>
        <!-- 加粗字体路径 -->
        <bold><![CDATA[fonts/MSYaHei/MSYaHei_bold.ttf]]></bold>
        <!-- 斜体字体路径 -->
        <italic><![CDATA[fonts/MSYaHei/MSYaHei.ttf]]></italic>
        <!-- 加粗斜体字体路径 -->
        <bolditalic><![CDATA[fonts/MSYaHei/MSYaHei.ttf]]></bolditalic>
        <pdfEmbedded><![CDATA[true]]></pdfEmbedded>
        <pdfEncoding>Identity-H</pdfEncoding>
        <exportFonts/>
    </fontFamily>
</fontFamilies>

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

1.3、在Jasper Studio中添加字体

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

1.4、指定模板文件

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

模板文件中使用字体文件还是比较简单的,关键是需要确保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<String, Object> 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指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

1.7、服务器部署

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

【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题,【WPSP笔记】,JasperReports,Java报表开发,Jasper显示中文,指定中文字体,Jasper中文字体

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

综上,这篇文章结束了,主要介绍JasperReport指定自定义字体文件,解决中文不显示问题。。文章来源地址https://www.toymoban.com/news/detail-674094.html

到了这里,关于【JasperReport笔记05】JasperReport指定自定义字体文件,解决中文不显示问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【linux】SSH终端Putty配置:文件上传/下载、显示中文字体、自动登录

    一篇博客介绍了12种SSH终端工具的比较:https://www.cnblogs.com/Zz1tai/p/15668230.html 注:Aechoterm官网上说是有一些色调可调的,可能是后期更新的。 一般远程服务器终端最常用的是xshell,功能更全面,而使用Putty主要是轻量级,没有那么多复杂的功能。每个人使用需求不同可进行不同

    2024年01月20日
    浏览(69)
  • Python利用Matplotlib绘图无法显示中文字体的解决方案

    问题描述 在Python利用Matplotlib绘图的时候,无法显示坐标轴上面的中文和标题里面的中文 运行显示: 解决方法一: 解决方法二: 两种方法都可以使中文正常显示 补充: SimSun :宋体;KaiTI:楷体;Microsoft YaHei:微软雅黑 LiSu:隶书;FangSong:仿宋;Apple LiGothic Medium:苹果丽中黑

    2024年01月23日
    浏览(54)
  • 自定义字体服务 - 基于Node的Web字体解决方案

    自定义字体服务 - 基于Node的Web字体解决方案 背景 技术选型 @font-face介绍 实现方案(介绍字体设计、转换、兼容性处理等技术实现细节。) 接口实现方式(实现中遇到的问题和解决方案) 总结 开源地址 参考 在前端开发中,字体是非常重要的组成部分,因为字体可以为页面

    2024年02月15日
    浏览(31)
  • visual studio code导入自定义模块报错的解决方法(pycharm中能够运行的文件,vs code报错:未找到指定模块)

    一、先看下目录结构 二、在main.py中导入Utils中的模块,直接导入即可 三、在custom_event_parse.py中导入execl_base.py中的模块 导入模块: 以上这种导入方式,如果run文件是main.py,是可以run的。 但是如果直接运行custom_event_parse.py进行调试的时候,就会报错。 报错: 解决办法: 修改

    2024年02月08日
    浏览(64)
  • Unity中TMP中文字体导入及字库显示不全问题解决

    记录Unity中TMP第三方中文字体导入及字库显示不全问题解决的方法。 https://www.100font.com/ 为了项目方便管理,一般在Assets资源下新建Fonts文件夹,把字体资源拖入 记录Unity中TMP中文字体导入及字库显示不全问题解决的方法。

    2024年02月05日
    浏览(118)
  • Mac系统下matplotlib中SimHei中文字体缺失报错的解决办法

    使用matplotlib画图时,因为缺少字体,、图像上label上的中文显示时空白小方块。因为matplotlib默认没有中文。 Step 1. 在终端进入python3环境,查看matplotlib字体路径: 找到自己的matplotlib字体文件路径: /Users/zhangzhang/miniforge3/envs/py38_pytorch/lib/python3.8/site-packages/matplotlib/mpl-data/ fon

    2023年04月13日
    浏览(69)
  • Qt5项目拆解第一集解决:中文乱码| 全局字体|注册表|QSS/CSS

    # 一、乱码解决代码片段 QTextCodec是Qt中用于处理文本编码和字符集转换的类。它提供了一系列静态函数来实现不同编码的文本转换,包括编码转换、字符集检测和转换、以及数据流中的文本编码处理。QTextCodec类使得Qt可以在不同的编码和字符集之间进行无缝转换,从而方便地

    2024年01月21日
    浏览(64)
  • 《基于 Vue 组件库 的 Webpack5 配置》6.将字体库和图片等静态资料,编译后打包至指定文件夹

    参考 Rule.generator.filename package.json 的配置如下

    2024年02月11日
    浏览(77)
  • 【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)

    这篇文章,主要介绍JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)。 目录 一、基础组件元素 1.1、StaticText 1.2、TextField 1.3、Image 1.4、Break分页 1.5、Rectangle矩形区域 1.6、Ellipse椭圆区域 1.7、Line斜线 1.8、Generic组件(TODO) 1.9、Frame组件(TODO) 1.10、Subreport组件

    2024年02月10日
    浏览(46)
  • idea 自定义配置文件,中文乱码问题

    语言:Java 项目:基于Spring框架开发的项目 工具:IntelliJ IDEA 20182021 在项目中 自定义的配置文件 (如:xx.config xx.conf xx.pro等)的中文注释,打开看到的中文注释为乱码。如图: 快速解决问题,跳过这里,直接看解决方案 1、项目编码或idea编码有问题? 2、截图中 u7f16u7801

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包