如何在 iText 中的 FontFactory.register 中加载自定义字体

99m*_*aas 3 java fonts pdf-generation itext

我需要您的帮助来添加自定义字体“arial.ttf”,该字体存储FontFactory.register在 iText中的方法中我的项目的资源文件夹下。

Windows资源管理器项目中字体路径如下:

public_html\resources\fonts\arial.ttf

引用字体的代码是:

FontFactory.register("/resources/fonts/arial.ttf", "my_bold_font");
Font myBoldFont = FontFactory.getFont("my_bold_font");
Run Code Online (Sandbox Code Playgroud)

但是,当我运行 Java 方法时,它总是给我错误:

java.io.IOException: 找不到 /resources/fonts/arial.ttf 作为文件或资源。

我尝试了不同的路径,例如:

/public_html/resources/fonts/arial.ttf

../resources/fonts/arial.ttf

/fonts/arial.ttf

/arial.ttf

但结果是找不到文件。那么如何引用文件呢?

Roo*_*oot 5

您可以获取资源文件夹中存在的“字体”的路径,使用contextClassLoader并且可以在FontFactory文件路径中使用。

URL font_path = Thread.currentThread().getContextClassLoader().getResource("fontname");
FontFactory.register(font_path.toString(), "test_font");
Run Code Online (Sandbox Code Playgroud)

我已经测试了这段代码,它工作正常。