PDFBox必须使用字体头

时间:2018-02-06 10:02:34

标签: java maven fonts pdfbox

我正在尝试使用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 ......)

1 个答案:

答案 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。

谢谢