描述
利用aspose.words生成pdf文档发现生成文档字体乱码
<dependency>
<groupId>aspose.words</groupId>
<artifactId>words-pdf</artifactId>
<version>18.10-SNAPSHOT</version>
</dependency>
解决
原因
并不是pdf乱码,乱码的化会是一堆??,方框是因为linux的字体库中没有和pdf字体匹配的格式,也就是说没有pdf匹配的字体格式,比如文档字体是宋体,但是系统没有这种字体,所以就会乱码,一般中文多一些
解决
下载需要的word字体库一般是.ttf或.ttc的文件
下面以docker为例,linux同理
- 新建/usr/share/fonts目录(字体库目录)
- 将自己需要的字体拷贝到目录
- 执行fc-cache,刷新系统字体库缓存
- 查看fc-list
DockerFile示例
FROM java:8
MAINTAINER zhangy
EXPOSE 8080
COPY Fonts/ /usr/share/fonts/
RUN fc-cache
RUN mkdir /app && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/shanghai" > /etc/timezone
RUN mkdir /app/agent
WORKDIR /app
ADD app.jar app.jar
CMD java ${JAVA_OPTS} -jar app.jar