说明:
使用POI导出Excel时,增加导出水印功能,设置字体为微软雅黑、在Windows下导出显示正常,部署到Linux服务器时导出为框框。如下图所示:
原因:
Linux没有微软雅黑字体、并且没有中文字体。
不同情况下解决方案:
1、Linux系统中直接安装字体。
2、普通JDK中拷贝字体到fonts文件夹。
3、OpenJDK中拷贝字体到fonts文件夹。
方案1
1、查看Linux中的所有字体。
fc-list
2、查看Linux中的中文字体。
fc-list :lang=zh
3、安装字体
cd /usr/share/fonts/
4、创建中文字体文件夹
mkdir chinese
5、复制Windows下的字体文件到chinese文件夹内
6、先安装mkfontscale
yum -y install mkfontscale
7、安装字体文件、建立字体缓存
mkfontscale
mkfontdir
fc-cache -fv
8、查看已安装字体
已安装中文宋体字体。
方案2
1、查看Java环境安装路径
echo $JAVA_HOME
2、进入fonts文件夹
cd /usr/java/jdk1.8.0_301/jre/lib/fonts/
3、上传字体文件
4、使用代码查看当前系统已安装的字体
import java.awt.GraphicsEnvironment;
public class BaseFonts {
public static void main(String[] args) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String forName[] = ge.getAvailableFontFamilyNames();
for (int i = 0; i < forName.length; i++) {
System.out.println(forName[i]);
}
}
}
5、编译Java代码、并运行。
javac BaseFonts.java
java BaseFonts
方案3
1、查看OpenJDK版本
java -version
2、查看系统的字体版本
fc-list
3、执行方案2的Java获取当前已安装字体
java BaseFonts
4、查看OpenJDK的安装目录
1)找到Java执行文件的路径
which java
2)找到执行路径指向环境的软连接
ls -lrt /usr/bin/java
3)找到最终指向安装路径
ls -lrt /etc/alternatives/java
5、进入安装路径的/jre/lib目录
6、创建fonts文件夹
mkdir fonts
7、进入fonts文件夹后、上传字体文件
8、重新执行查看字体,显示字体已安装
java BaseFonts