微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iText7 - 无法从 jar 加载自定义 ttf 字体

如何解决iText7 - 无法从 jar 加载自定义 ttf 字体

您好,亲爱的同事们。

能否请您帮我理解为什么在将 Spring Boot 应用程序打包到 jar 中时会出现此错误,而从 IDE 调试应用程序时却没有原因?

var is = getClass().getResourceAsstream("/fonts/2211.ttf");
byte[] b = new byte[is.available()];
is.read(b);
var fontProgram = FontProgramFactory.createFont(b); // <-- com.itextpdf.io.IOException: Type of font is not recognized.

我的想法是 *.ttf 可能被打包到 jar 中被破坏了,所以我试图从资源中获取一个字节数组,进一步比较表明它们与 jar 之外的原始 *.ttf 文件相同。

有什么想法吗?

解决方法

不要使用 is.available() 来确定资源的长度,因为通常这不是此方法返回的内容(请参阅许多其他问题,例如 this one).

而是通过缓冲区复制整个流或使用实用方法。

当您使用 iText 7 时,您可以使用其 com.itextpdf.io.util.StreamUtil 实用程序

byte[] b = StreamUtil.inputStreamToArray(is);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。