simsun.ttc is not a valid ttf file(linux OS/windows OS)
2022/7/1 5:19:29
本文主要是介绍simsun.ttc is not a valid ttf file(linux OS/windows OS),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
https://blog.csdn.net/wsjzzcbq/article/details/112252102
报错原因:
项目打包时,会对resources目录下的字体文件进行压缩,项目部署后,又会对字体文件进行解压,导致字体文件发生变化,进而损坏字体文件,因此报错 simsun.ttc is not a valid TTF file。笔者初次遇到这个报错时也很棘手,以为是字体文件本身的问题,后来仔细对比才发现打包后的字体文件大小和打包前不同,如果将打包前的字体文件直接复制到打包后的项目中,就没有这个报错了
————————————————————————————————————————————————————————————
终极 解决方案:
使用 simsun.ttc 放在classpath下
1、在window下, 从 C:\Windows\Fonts 文件夹中,复制仿宋字体(simsun.ttc)到maven 项目中 src/main/resources/fonts/
2、在pom.xml中添加
2.1、这种方式会导致字体库文件被压缩
项目打包时,会对resources目录下的字体文件进行压缩,项目部署后,又会对字体文件进行解压,导致字体文件发生变化,进而损坏字体文件,因此报错 simsun.ttc is not a valid TTF file
<build> <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> <includes> <include>**/*.ttc</include> </includes> <excludes> <exclude>**/*.font</exclude> </excludes> </resource> <resource> <directory>src/main/resources/</directory> <filtering>false</filtering> <includes> <include>**/*.font</include> </includes> </resource> </resources> </build>
2.2、这种方式不会压缩文件
<build> <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> <excludes> <exclude>fonts/*</exclude> </excludes> </resource> <resource> <directory>src/main/resources/</directory> <filtering>false</filtering> <includes> <include>fonts/*</include> </includes> </resource> </resources> </build>
2.3、设置字体
BaseFont bf = BaseFont.createFont("fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
2.4、设置其他字体也是一样的
//设置中文字体,解决中文不能显示问题(加载classpath下字体, 名字后面要加上type索引 0/1,不能大于1,看源码就知道) BaseFont bf = BaseFont.createFont("/fonts/simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
3、其他 3种解决办法
1、将字体文件放在服务器的某个文件夹下,而不是放在resources目录下跟随项目,这样就不存在打包压缩的问题了,就解决了
2、项目打包后,手动将没被压缩的字体文件复制到打包后的对应文件夹下
3、使用系统的字体文件,如果系统环境没有字体文件,可以给系统安装字体文件,这个解决办法其实和办法1是同样的道理,这里推荐使用办法1
4、JasperReport在Linux系统下找不到字体的问题
https://blog.csdn.net/zouliping123456/article/details/78950689
场景:
解决JasperReport在Linux系统下找不到字体的问题
1.异常信息
以JasperReport3.7.6为例:
net.sf.jasperreports.engine.util.JRFontNotFoundException: 2.解决方法 2.1.导入字体 IReport中先导入设计报表作需要的字体:【Tools->Options->IReport->Fonts】,选择【Install Font】,然后选择你的字体文件,如果是中文字体,则选择【PDF Encoding】为【Identity-H (Unicode with horizontal writing)】并勾选【Embed this font in PDF Document】 2.2.报表设计 把PdfFontName, PdfEncoding, PdfEmbedded三个设置都去掉。报表设计中使用的字体只能选择上面导入的字体列表中的字体。 2.3.导出字体 在【Tools->Options->IReport->Fonts】中选择所有手动导入的字体(不包括内置的),然后选择【Export as extension】,把字体导出为一个Jar包。 2.4.添加字体JAR包 把字体JAR包添加在运行环境classpath中,或随项目发布。
———————————————————————————————————————————
https://www.freesion.com/article/74181399976/
这篇关于simsun.ttc is not a valid ttf file(linux OS/windows OS)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南