使用iText从* .ttf文件创建字体

这是我的Resources.class中的一种方法:

public static Font loadFont(String fontFileName)

{

BaseFont base = null;

try

{

base = BaseFont.createFont(Resource.class.getResource(fontFileName + "_font.ttf").toString(), BaseFont.WINANSI, true);

}

catch (DocumentException | IOException e)

{

e.printStackTrace();

}

Font font = new Font(base, Font.BOLD, 15);

return font;

}

我的程序的结构是:

src (folder)

core (package)

//all (but one) classes used for program

resources (package)

class Resources (used to load resources into the "core" classes)

wingding_font.ttf

这是不起作用的代码片段:

p = new Phrase("some random text");

p.setFont(Resource.loadFont("wingding"));

pa = new Paragraph(p);

pa.setFont(Resource.loadFont("wingding"));

document.add(pa);

当我打开PDF时,文本在那里,但是使用了一些字体(我猜是默认字体)。

注意1:我尝试将字体设置为仅短语(p)和仅段落(pa),但这丝毫没有改变输出。

注意2:Resource.loadFont(“ wingding”); try / catch方法没有“捕获”任何错误。

回答:

尝试创建一个嵌入的字体对象,并使用此字体呈现文本:

//this code should run once at initialization/application startup

FontFactory.register("resources/wingding_font.ttf");

Font textFont = FontFactory.getFont("wingding", BaseFont.IDENTITY_H,

BaseFont.EMBEDDED, 10); //10 is the size

...

//reuse the reference to the font object when rendering your text

Paragraph p = new Paragraph("someText", textFont);

顺便说一下,iText具有FontFactory帮助加载字体的类,您不再需要中的loadFont方法Resources

希望能帮助到你。

以上是 使用iText从* .ttf文件创建字体 的全部内容, 来源链接: utcz.com/qa/425831.html

回到顶部