[英]Font head is mandatory for PDFBox
我正在尝试使用 PDFBox 即时生成 PDF。 当我尝试将新字体加载到 PDFBox 时,我收到一个异常,指出“头部是强制性的”。 这似乎是正常的
PDType0Font pdfFont = PDType0Font.load(doc, fontFile);
https://issues.apache.org/jira/browse/PDFBOX-3260
我无法找到的是:有些字体只是不是带有这个“头部”吗? 我尝试从其他几个来源下载,结果相同。 是否有(免费)方法可以修改 ttf 文件以满足此要求?
客户只会对 Calibri 感到满意。
谢谢
编辑:
正如上面链接中所建议的,我尝试使用 Resource 和 InputStream 来获取字体
Resource fontResource = appContext.getResource("classpath:/WEB-INF/classes/reports/calibri/calibri.ttf");
和
InputStream fontFile = new FileInputStream(new File(pathToFile));
我还在我的 Maven 资源插件中添加了以下内容:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<resources>
<resource>
<directory>src/main/resources/reports/calibri</directory>
<filtering>false</filtering>
</resource>
</resources>
<encoding>${project.encoding}</encoding>
</configuration>
</plugin>
这些 maven 更改基于此: https : //maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
结果是一样的,head是必填的
诚然,我对 maven(或字体或 java...)了解不多。
所以,事实证明我没有正确地从 Maven 的资源过滤中排除字体。 以下是诀窍。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<encoding>${project.encoding}</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
按照@Tilman Hausherr 的建议,我尝试在准系统 java main 方法中加载字体并确认它在那里工作正常,然后再次返回查看 maven。
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.