iTextPdf7 - 从资源中获取字体

时间:2017-10-17 20:37:16

标签: java custom-font itext7

我正在使用iText7用Java创建PDF。我使用了一些自定义字体,这些文件位于resources文件夹中。

当我在netbeans上测试和运行应用程序时,这非常有效:

PdfFontFactory.register("./src/main/resources/GOTHAM-BOLD.otf", "gotham-bold");
PdfFont gBold = PdfFontFactory.createRegisteredFont("gotham-bold", PdfEncodings.IDENTITY_H);

但是当我构建并尝试运行应用程序并生成PDF文件时,iText无法找到字体文件,因为它需要直接path。 我有什么替代品?我真的需要这个才能在任何电脑上工作(比如其他资源)。

1 个答案:

答案 0 :(得分:2)

我不太清楚为什么要使用别名。您可以使用其他工厂方法接受byte[]数组并结合Class.getResourceAsStream(String)来检索字体资源的内容,该内容可用于创建FontProgram实例,然后构造{{1 }}

您的代码可以更改如下:

PdfFont

如果你在静态环境中工作,可以像// Apache Commons IO is used, but any way of retrieving bytes from stream will suffice byte[] fontContents = IOUtils.toByteArray(getClass().getResourceAsStream("GOTHAM-BOLD.otf")); FontProgram fontProgram = FontProgramFactory.createFont(fontContents); document.setFont(PdfFontFactory.createFont(fontProgram, PdfEncodings.IDENTITY_H)); 一样使用它(把你的班级名称改为Main.class.getResourceAsStream())。

确保字体资源出现在最终的程序集中,你很高兴。此方法中不依赖任何URL。