2团
Published on 2024-08-16 / 29 Visits
0
0

Spring Boot的Docker应用生成Excel缺失字体

1. 前言

项目上部署Spring Boot应用至内网环境的时候,发现在调用生成Excel时主机缺失相应字体,又因为内网机器无法访问互联网下载相应字体,导致功能调用失败,为解决此问题,需要在打包Spring Boot镜像时,将需要的字体一并打包。

2. 打包字体

在Linux Docker镜像中生成Excel文件时,如果缺少字体,可能会导致生成的Excel文件在打开时出现字体缺失或显示不正确的问题。以下是解决这一问题的步骤:

2.1 安装字体

你需要在Docker镜像中安装所需的字体。常见的字体包包括 ttf-mscorefonts-installer(微软核心字体)和 fonts-noto(Google的Noto字体)。你可以在Dockerfile中添加以下命令来安装这些字体:

# 使用基础镜像

FROM ubuntu:20.04

# 更新包列表并安装字体

RUN apt-get update && \

    apt-get install -y --no-install-recommends \

    ttf-mscorefonts-installer \

    fonts-noto \

    fonts-dejavu-core \

    && apt-get clean \

    && rm -rf /var/lib/apt/lists/*

# 其他安装步骤...

2.2 确保字体配置正确

安装字体后,确保字体配置文件已更新。你可以在Dockerfile中添加以下命令来刷新字体缓存:

# 刷新字体缓存

RUN fc-cache -fv

2.3 验证字体安装

你可以在容器中运行以下命令来验证字体是否已正确安装(例如查询所有已安装的英文字体):

docker run -it --rm your_image_name fc-list :lang=en

3.0 完整示例

# 使用基础镜像
FROM ubuntu:20.04

# 配置阿里云镜像代理
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list

# 更新包列表并安装字体
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    ttf-mscorefonts-installer \
    fonts-noto \
    fonts-dejavu-core \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 刷新字体缓存
RUN fc-cache -fv

# 安装其他依赖项(例如Python和相关库)
RUN apt-get update && \
    apt-get install -y python3 python3-pip && \
    pip3 install pandas openpyxl

# 复制并运行生成Excel文件的脚本
COPY generate_excel.py /app/generate_excel.py
CMD ["python3", "/app/generate_excel.py"]


Comment