繁体   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