jasperreports6.12.2 could not load the following font解决方法

article/2025/10/1 5:26:06

jasperreports通过Java代码生成PDF的时候不能获取中文字体,报错提示如下:
在这里插入图片描述

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font: 
pdfFontName: STSong-Light
pdfEncoding: Identity-H
isPdfEmbedded : true

本次环境:jasperreports使用的版本是6.12.2jaspersoft studio使用的版本是6.18.1,截图如下:
在这里插入图片描述
在这里插入图片描述
解决方案:
1.首先在项目资源文件目录下新建目录fonts
在这里插入图片描述
2.其次fonts目录新建两个文件:fonts.xmlSTSONG.TTF
fonts.xml 内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies><fontFamily name="SansSerif"><normal>fonts/STSONG.TTF</normal><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>

STSONG.TTF字体文件,内容如下:(该字体可以在网上下载)
在这里插入图片描述
3.接着在项目资源文件目录下新建文件jasperreports_extension.properties
在这里插入图片描述
jasperreports_extension.properties内容如下:
配置文件第一行内容可以注释掉,不影响!

#net.sf.jasperreports.awt.ignore.missing.font=true
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.lobstertwo=fonts/fonts.xml

最后重新启动项目进行验证就成功了,既没有报错,PDF文件也生成了!
总结:jasperreports对中文字体支持不友好,好像是每个版本或多或少都有类似的问题,那么针对其他版本也可以优先使用下上述方法,如果不好使,再考虑其他方法。如果其他朋友有类似的问题,欢迎留言,当然如果有解决方案,那更是扫榻相迎!


http://chatgpt.dhexx.cn/article/alTiLFNH.shtml

相关文章

快速小巧的粘贴应用程序Hasty Paste

什么是 Hasty Paste? Hasty Paste 是一个快速粘贴文本并共享的地方&#xff0c;主要用于共享调试日志等&#xff0c;以帮助开发人员提供技术支持。该项目的目标是既快又小。 命令行安装 在群晖上以 Docker 方式安装。 官方的镜像没有发布在 docker hub&#xff0c;而是在 gh…

SpringBoot--解决BigDecimal传到前端后精度丢失的问题

原文网址&#xff1a;SpringBoot--解决BigDecimal传到前端后精度丢失的问题_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍SpringBoot如何解决BigDecimal传到前端后精度丢失问题。 解决方案是&#xff1a;转成字符串格式返回。 问题描述 实例 Controller package com.…

BigDecimal 简单使用

目录 为什么使用BigDecimal 解决方案 构造方法 类型转换 double 转 BigDecimal BigDecimal 转 String BigDecimal 转 double/int/long等 加减乘除取余 divide 舍入模式 比较大小 格式化(DecimalFormat) 小结 为什么使用BigDecimal 1.float和double类型的主要设计目…

BigDecimal用法

文章目录 1、创建一个BigDecimal对象1.1、常用构造函数1.1、常用计算方法 2、BigDecimal很方便的几个用法2.1、用BigDecimal去除小数点后多余的0&#xff1a;stripTrailingZeros()2.2、BigDecimal的原值和科学计数值2.3、用BigDecimal比较大小&#xff1a;compareTo()2.4、BigD…

mysql bigdecimal查询_mysql bigdecimal

java学习:Java中的其它类 568x573 - 55KB - JPEG Java中BigDecimal类你了解多少?! 720x480 - 30KB - JPEG TypeHandlers 640x396 - 25KB - JPEG BigDecimal equals方法可能不相等 678x260 - 9KB - JPEG

BigDecimal 详解

一&#xff0c;BigDecimal的简介 Java在java.math包中提供的API类BigDecimal&#xff0c;用来对超过16位有效位的数进行精确的运算。 双精度浮点型变量double可以处理16位有效数。在实际应用中&#xff0c;需要对更大或者更小的数进行运算和处理。float和double只能用来做科学…

BigDecimal加减乘除计算

BigDecimal的运算——加减乘除 首先是bigdecimal的初始化 这里对比了两种形式&#xff0c;第一种直接value写数字的值&#xff0c;第二种用string来表示 我们对其进行加减乘除绝对值的运算,其实就是Bigdecimal的类的一些调用 BigDecimal num1 new BigDecimal(0.005);BigDecim…

java 中 BigDecimal 详解

首先&#xff0c;学习一个东西&#xff0c;我们都必须要带着问题去学&#xff0c;这边我分为 【为什么&#xff1f;】【是什么&#xff1f;】【怎么用&#xff1f;】 【为什么要用BigDecimal&#xff1f;】 首先&#xff0c;我们先看一下&#xff0c;下面这个现象 那为什么会…

Java —— JDBC关闭Statement后是否还需要关闭ResultSet?

一、问题描述 下面的代码使用了try-with-resource语法&#xff0c;会自动关闭Connection和Statement,是否还需要关闭ResultSet&#xff1f; Statement关闭后ResultSet会被回收么&#xff1f; 二、JDBC规范 JDBC规范4.3中有对Statement关闭后是否需要关闭ResultSet进行说明。…

ResultSet(结果集)、Statement

ResultSet 基本介绍&#xff1a; 1.表示数据库结果集的数据表&#xff0c;通常通过执行查询数据库的语句生成 2.ResultSet对象保持一个光标指向其当前的数据行&#xff0c;光标最初在第一行之前 3.next()方法是将光标移动到下一行&#xff0c;并且由于在ResultSet对象中没有…

【JDBC】------ResultSet(结果集)和常见异常

分享第二十条励志语句 宁可自信&#xff0c;也不要盲目悲观。因为自信是一种力量&#xff0c;即使你的自信有些盲目&#xff0c;也无关大局&#xff0c;你可以在实践中调整心态&#xff0c;找到自己的恰当的位置。如果盲目自卑&#xff0c;你就必然失去一切。 目录 分享第二十…

JDBC的ResultSet

一、ResultSet[结果集] 1.表示数据库结果集的数据表&#xff0c;通常通过执行查询数据库的语句生成。 2.ResultSet对象保持一个光标指向其当前的数据行&#xff0c;最开始光标在第一行。 3.next方法将光标移动到下一行&#xff0c;由于在ResultSet对象中没有更多行时返回fal…

Java中,ResultSet 的用法

•在Java中&#xff0c;获得ResultSet的总行数的方法有以下几种。 第一种&#xff1a;利用ResultSet的getRow方法来获得ResultSet的总行数 Java代码 Statement stmt con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet r…

ResultSet结果集的使用

一、ResultSet结果集的简介 查询数据库时&#xff0c;返回的是一个二维的结果集&#xff0c;我们需要用到ResultSet来遍历结果集&#xff0c;获取每一行的数据。 二、使用ResultSet遍历查询结果 boolean next() 将光标从当前位置向前移一行。 String  getString(int column…

ResultSet用法集锦

ResultSet用法集锦 添加链接描述 结果集(ResultSet)是数据中查询结果返回的一种对象&#xff0c;可以说结果集是一个存储查询结果的对象&#xff0c;但是结果集并不仅仅具有存储的功能&#xff0c;他同时还具有操纵数据的功能&#xff0c;可能完成对数据的更新等.结果集读取数据…

ResultSet的介绍与使用

相关文章 jdbc连接以及出现的异常处理Jdbc工具类ResultSet的介绍与使用jdbc中的sql注入PreparedStatement的介绍与解决sql注入jdbc管理事务 ResultSet ResultSet是我们使用jdbc连接时&#xff0c;查询的一个返回结果集,ResultSet resultSet stmt.executeQuery(sql),下面就使用…

JDBC之ResultSet接口

ResultSet介绍 对数据库的查询操作&#xff0c;一般需要返回查询结果。在程序中&#xff0c;JDBC为我们提供了ResultSet接口来专门处理查询结果集。 由于ResultSet是JDBC的一个接口&#xff0c;先来简单了解一下JDBC&#xff1a; JDBC&#xff1a;Java Database Connection&am…

android studio BindService

一.输入&#xff1a; 1.全部代码&#xff1a; 主界面代码&#xff1a; public class BindServiceActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG "BindServiceActivity";private Button mBtBindService;…

Service中bindService

最近有用到Activity需要不断的从Service中获取数据&#xff0c;第一个想法肯定就是通过bind回调机制了&#xff0c;有几点概念模糊特此记录下&#xff1a; 单独使用bindService()&#xff0c;unbindService()会经历&#xff1a;->onCreate()->onBind()->Service runn…

bindService不调用onServiceConnected的问题

bindService不调用onServiceConnected的问题 昨天做一个项目时&#xff0c;Activity需要bindService获取到service实例与service进行交互&#xff0c;创建好service如下&#xff08;例&#xff09;&#xff1a; class MyService{private IBinder mBinder new MyServicerBind…