[英]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.