springboot通过ftl模板动态生成图片字体异常加载字体文件
针对上篇文章springboot通过ftl模板动态生成图片(html生成图片imgBase64)有不少小伙伴问生成的图片字体异常,或者本地正常服务器异常,我这里有一个优化,给字体文件放在项目中自己加载即可
响应的调整:
POM文件中添加排除字体文件的编译
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.ttf</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>ttc</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
<version>3.0.2</version>
</plugin>
</plugins>
</build>
第二步调整上篇文章中的字体加载方法
/**
* 宋体
*
* @param style Font.BOLD
* @param size 24
*/
public static Font getSIMSUN(int style, float size) {
Font font = null;
//获取字体流
InputStream simsunFontFile = Thread.currentThread().getContextClassLoader().getResourceAsStream("fonts/simsun.ttc");
try {
//创建字体
font = Font.createFont(Font.PLAIN, simsunFontFile).deriveFont(style, size);
} catch (FontFormatException e) {
log.error("", e);
} catch (IOException e) {
font = new Font("宋体", Font.BOLD, 6);
log.error("", e);
}
return font;
}
然后直接发布到生产环境Linux字体就正常啦