解决jasper在linux环境中找不到字体(亲测有效)

问题描述:代码在windows环境中运行在linux环境中报错:Font ‘宋体’ is not available to the JVM,其实就是字体找不到,但是跟着网上很多解决方式也没解决问题,系统安装字体、项目内放置字体文件和jvm安装字体包都尝试过,结果都不行,最后字体文件打包成jar包引用尝试成功,下面展示具体如何做的。

1、将字体打成jar包

1、首先打开制作模板工具TIBCO Jaspersoft Studio
2、点击windows
在这里插入图片描述
3、点击preferences
在这里插入图片描述
4、选择字体
在这里插入图片描述
5、填写信息
在这里插入图片描述
注意:我是在windows中安装的这个工具,并且windows中已有“宋体”字体文件,我第一次直接将TrueType (.ttf)路径写为了此电脑中字体文件的路径,这个路径应该写为你部署项目服务器的字体路径,还有一个注意点是我用的宋体,我直接将windows中宋体上传到了linux服务器,但是最后还是不行,原因是windows中的宋体字体文件是ttc格式的,我们需要下载为ttf格式。
在这里插入图片描述
源码中如果不是TTF和OTF格式会有其他处理方式。
6、导出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

给项目加入jar包

1、新加lib文件夹
在这里插入图片描述
这里咋们可以看一下jar中都有什么,其实就是配置,根本没有字体文件,所以这个字体文件需要自己手动放上去。
在这里插入图片描述
在这里插入图片描述
看这儿我的路径是/home/water/back/simsun.ttf,所以你得把这个字体文件下载下来传到linux服务中。
在这里插入图片描述

2、配置maven
2.1、加入依赖

 		<dependency>
            <groupId>simsun</groupId>
            <artifactId>simsun</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/simsun.jar</systemPath>
        </dependency>

在这里插入图片描述
2.2、打包配置

 		 <resources>
            <resource>
                <directory>lib</directory>
                <targetPath>/BOOT-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>

将jar包打包到/BOOT-INF/lib/下

到了这儿就剩打包部署到linxu系统中了,别忘了上传字体文件,别忘了上传字体文件,别忘了上传字体文件,重要的事说三遍,并且路径需要和你配置的一模一样。

总结

不知道为什么其他方式都不行,看别人的都好像能行,但是自己试了很多次都不行,都看了源码中怎么去加载字体了,并且发现“项目内放置字体文件”这种方式和打成jar包几乎一致,但是有细小区别如下图
jar包
在这里插入图片描述
项目内放置字体文件配置
在这里插入图片描述
看出区别了吧,我也不知道是不是因为这个问题,我也没去试了。

参考

UOS Font ‘宋体‘ is not available to the JVM
解决 Font ‘宋体’ is not available to the JVM
maven引入本地jar包的方法
JasperReport 中踩过的坑

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Spring 5 ,你可以通过以下步骤在 applicationContext.xml 文件配置 Jasper 解析器: 首先,确保你已经将 JasperReports 相关的依赖添加到你的项目。例如,如果你使用 Maven,可以在 pom.xml 文件添加以下依赖: ```xml <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.17.0</version> </dependency> ``` 接下来,在 applicationContext.xml 文件添加以下配置: ```xml <!-- 配置 JasperReports 的视图解析器 --> <bean id="jasperViewResolver" class="org.springframework.web.servlet.view.jasperreports.JasperReportsViewResolver"> <!-- 设置报表文件的位置 --> <property name="prefix" value="/WEB-INF/jasper/"/> <!-- 设置报表文件的后缀名 --> <property name="suffix" value=".jasper"/> <!-- 设置报表文件的编码 --> <property name="characterEncoding" value="UTF-8"/> <!-- 设置报表文件是否需要编译 --> <property name="viewNames" value="*.jasper"/> <!-- 设置报表文件的编译路径 --> <property name="compileDirectory" value="/WEB-INF/jasper/compiled/"/> </bean> ``` 在上述配置,你需要根据实际情况修改以下属性值: - `prefix`:报表文件所在的目录路径。 - `suffix`:报表文件的后缀名。 - `characterEncoding`:报表文件的编码方式。 - `viewNames`:视图名匹配模式,用于确定哪些视图将由 JasperReports 解析器处理。 - `compileDirectory`:报表文件的编译路径。 配置完成后,你可以在 Spring MVC 的控制器返回报表视图名称(不包括前缀和后缀),Spring 会根据配置的解析器自动查并渲染对应的 Jasper 报表。 注意:以上配置适用于较早版本的 Spring,如果你使用的是较新版本(如 Spring Boot),可以使用更简化的配置方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值