在 Spring Boot 项目中,使用 iTextPDF 库的 BaseFont.createFont()
方法并使用外部字体,您需要将字体文件放置在项目的资源文件夹中,然后使用相对路径来引用它们。
1.绝对路径
BaseFont.createFont("C:\\Windows\\Fonts\\simfang.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED)
2.将字体文件放置在 src/main/resources/fonts
目录下,读取resource目录下的字体
BaseFont baseFont = BaseFont.createFont("classpath:/fonts/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
注:此方式只有在打成jar时才生效
3.在 Spring Boot 项目中,您可以使用 ResourceLoader
来加载文件,而不必担心文件路径的问题。ResourceLoader
可以在任何环境中工作,无论是在 IDEA 中运行还是在打包的 JAR 文件中运行。
@Service
public class MyService {
private final ResourceLoader resourceLoader;
public MyService(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
public void generatePdf() throws IOException, DocumentException {
//第一种情况 以 .ttf结尾的字体
Resource resource = resourceLoader.getResource("classpath:/fonts/simfang.ttf");
InputStream inputStream = resource.getInputStream();
// Use the input stream to create the BaseFont object
BaseFont baseFont = BaseFont.createFont("simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, inputStream, null);
//第二种情况 以 .ttc结尾的字体
Resource resource1 = resourceLoader.getResource("classpath:/fonts/simsun.ttc");
InputStream inputStream = resource1.getInputStream();
// Use the input stream to create the BaseFont object
BaseFont baseFont = BaseFont.createFont("simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, inputStream, null);
}
}
其它相关:
itext 生成 PDF(一)_itextpdf_猪之仆的博客-优快云博客
itext 生成 PDF(二)_itext2_猪之仆的博客-优快云博客