我正在尝试使用PDFBox动态生成PDF。当我尝试将新字体加载到PDFBox时,我得到一个例外,说明“head是强制性的”。这似乎是正常的
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
结果相同,头部是强制性的
不可否认,我不太了解maven(或字体或java ......)
答案 0 :(得分:1)
因此,事实证明我没有正确地从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。
谢谢