在 iText7 中提供 jar 中的字体
Providing font in jar in iText7
在 iText7 中,是否可以从类路径字体资源创建 PdfFont*?
目前,我将资源保存到临时文件夹并使用
PdfFont font;
public void setFont() {
font = PdfFontFactory.createFont(FontProvider.getFont(), PdfEncodings.IDENTITY_H, true);
}
其中 FontProvider.getFont() returns 用于 IDE 的类路径文件的路径或将文件保存到主机系统上的临时文件夹,并且 returns 一条路径。
如果可能,我想避免将文件保存到主机系统的步骤。
(* 一种开放许可的字体)
所有静态 PdfFontFactory::createFont
方法也有一个需要 byte[]
而不是 String
的重载。因此,您需要找到一种方法将您的资源放入 byte[]
.
从资源位置,您可以创建一个 InputStream
。然后您可以使用第三方方法从 InputStream
中获取字节(例如
Convert InputStream to byte array in Java).
InputStream is = this.getClass().getResourceAsStream("/class/path/URI");
byte[] fontBytes = IOUtils.toByteArray(is); // from Apache Commons IO
PdfFontFactory.createFont(fontBytes, PdfEncodings.IDENTITY_H, true);
仅供参考 iText 将在内部使用类似的算法将 String
引用的资源转换为 byte[]
,以便在 IRandomAccessSource
中进一步处理。
在 iText7 中,是否可以从类路径字体资源创建 PdfFont*?
目前,我将资源保存到临时文件夹并使用
PdfFont font;
public void setFont() {
font = PdfFontFactory.createFont(FontProvider.getFont(), PdfEncodings.IDENTITY_H, true);
}
其中 FontProvider.getFont() returns 用于 IDE 的类路径文件的路径或将文件保存到主机系统上的临时文件夹,并且 returns 一条路径。
如果可能,我想避免将文件保存到主机系统的步骤。
(* 一种开放许可的字体)
所有静态 PdfFontFactory::createFont
方法也有一个需要 byte[]
而不是 String
的重载。因此,您需要找到一种方法将您的资源放入 byte[]
.
从资源位置,您可以创建一个 InputStream
。然后您可以使用第三方方法从 InputStream
中获取字节(例如
Convert InputStream to byte array in Java).
InputStream is = this.getClass().getResourceAsStream("/class/path/URI");
byte[] fontBytes = IOUtils.toByteArray(is); // from Apache Commons IO
PdfFontFactory.createFont(fontBytes, PdfEncodings.IDENTITY_H, true);
仅供参考 iText 将在内部使用类似的算法将 String
引用的资源转换为 byte[]
,以便在 IRandomAccessSource
中进一步处理。