簡體   English   中英

PDFBox 必須使用字體頭

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM