当前位置: 首页 > news >正文

Linux字体缺失导致EasyExcel报错

环境:centos7(华为云服务器),jdk17,springboot3

        线下测试表格下载没有问题,一放到线上,下载下来都是空白,查看日志报错如下:

dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.RuntimeException: com.alibaba.excel.exception.ExcelGenerateException: java.lang.InternalError: java.lang.reflect.InvocationTargetException] with root causejava.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configurationat java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1269) ~[na:na]at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) ~[na:na]at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) ~[na:na]

        系统字体缺失

        系统联网:比较简单直接下载安装就行

sudo yum install fontconfig
sudo yum install dejavu-sans-fonts

         系统未联网:最烦的就是版本问题,直接从官网下载版本一直冲突,于是我用另一个同样centos7系统下载下来包然后移到问题服务器;

        yumdownloader下载的包会下在当前目录

yumdownloader dejavu-fonts-common
yumdownloader dejavu-sans-fonts fontpackages-filesystem

yumdownloader fontconfig

yumdownloader ttmkfdir

        安装所需依赖

sudo rpm -ivh dejavu-fonts-common*.rpm dejavu-sans-fonts*.rpm fontpackages-filesystem*.rpm  

        安装fontconfig

sudo rpm -ivh fontconfig-2.13.0-4.3.el7.x86_64.rpm

        安装ttmkfdir,当你在 Linux 系统中加了新的字体,可以使用 ttmkfdir 生成相关的字体配置文件,使得字体能被 X11 系统识别和使用;

 sudo rpm -ivh ttmkfdir 

        回到windows系统找要用的字体

C:\Windows\Fonts

        在问题服务器中创建文件夹,然后将字体文件移过来

cd /usr/share/fontconfig/

mkdir fonts 

chmod -R 755 /usr/share/fontconfig/fonts/

         生成字体目录文件

ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

        修改系统字体配置 

vi /etc/fonts/fonts.conf

        在 Font directory list 下添加你的文件夹

<dir>/usr/share/fontconfig/fonts</dir>

        保存,然后刷新字体缓存

fc-cache 

        然后查看是否生效

fc-list :lang=zh 

        easyExcel的配置中别忘了设置字体

public class ExcelFillCellMergeStrategy implements CellWriteHandler {@Overridepublic void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer integer, Boolean aBoolean) {Workbook workbook = writeSheetHolder.getSheet().getWorkbook();Font font = workbook.createFont();font.setFontName("SimHei");font.setFontHeightInPoints((short) 14);font.setBold(true);}
}

http://www.mrgr.cn/news/14884.html

相关文章:

  • 谷粒商城实战笔记-284-商城业务-分布式事务-本地事务隔离级别传播行为等复习
  • 生成艺术,作品鉴赏:将像素进行到底
  • 【曾哥分享-1】云 WAF 绕过
  • IWebHostEnvironment 的参数有哪些 ,说明下
  • 三级_网络技术_53_应用题
  • spring boot 根据实体类
  • df保存为excel
  • 【MRI基础】对比度噪声比CNR概念
  • 了解‌Prolog用于故障诊断
  • 阿里龙晰系统上将yum安装的myql_8.0.36升级到mysql_8.4.0的过程
  • MT5016A-ASEMI无人机专用整流桥MT5016A
  • 记一次 Garnet 的安装部署问题排查
  • SQL-多表查询
  • WLAN原理实验简述——AP上线
  • 网络游戏服务器如何有效防护DDoS与CC攻击
  • 自定义tabbar跳转防止页面抖动(uniapp案例,也适用所有前端项目)
  • Django框架安全
  • QT +ffmpeg-4.2.2-win64-shared 拉取 RTMP/http-flv 流播放
  • 如何使用WebSafeCompiler进行网站优化和知识产权保护
  • 自定义任意进制转换,平台架构之安全,商品ID,用户id--SAAS本地化及未来之窗行业应用跨平台架构