spring boot 中执行如下语句:ClassPathResource fronTtf = new ClassPathResourcefontmsyhttf; File file = fronTtfgetFile; BaseFont baseFont = BaseFontcreateFontfilegetPath BaseFontIDENTITY_H BaseFon
问题原因是因为在Spring Boot中,资源文件会打包在Jar包中,而不是以文件系统的形式存在,所以无法直接通过getFile()方法获取文件的绝对路径。解决方法是使用ClassPathResource的输入流获取文件内容,然后再将文件内容传递给BaseFont.createFont()方法,示例代码如下:
ClassPathResource fronTtf = new ClassPathResource("font/msyh.ttf");
InputStream inputStream = fronTtf.getInputStream();
BaseFont baseFont = BaseFont.createFont("msyh.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED, true, inputStream, null);
其中,第一个参数是字体文件的名称,第二个参数是编码格式,第三个参数设置为NOT_EMBEDDED,表示不嵌入字体文件,第四个参数设置为true,表示使用缓存,第五个参数是字体文件的输入流,第六个参数是字体文件的字节码,可以传递null
原文地址: https://www.cveoy.top/t/topic/dnzu 著作权归作者所有。请勿转载和采集!