1

我不得不将非标准字体(称为“Ovo”)添加到我正在处理的 JasperReports 项目中,并按照所有指示(例如此处)将字体从 iReport 导出到 .jar 并添加它到我在 Eclipse 中的构建路径。当我用 eclipse 编译项目时,这很好用。

现在我正在转向生产,并一直在使用mvn clean install命令在命令行上使用 Maven (v3.0.4) 编译项目,因此 eclipse 完全超出了构建周期。我已将字体 jar 安装到我的本地 maven 存储库中,并将其作为依赖项添加到我的 pom 中(类似于此处所述),但随后我运行程序,当生成使用该字体的文档的代码执行时,我得到一个JRFontNotFoundException

我检查了我的本地 repo 和我的 pom,并确保 jar 在那里并且 pom 正确识别它。我还使用mvn dependency:build-classpath检查了我的 maven 构建路径,还查看了我的mvn install输出。字体 jar 的路径出现在两者中,并且没有抛出任何错误。

我没主意了。为什么在 CLI 上使用 maven 编译项目时这个字体 jar 不起作用,但在 eclipse 中编译时没有问题?(它也是 Eclipse 中的一个 maven 项目,所以 .classpath 几乎只是说“使用 maven”)

这是我用来在本地存储库中安装 jar 的命令:

    mvn install:install-file -Dfile=jFreeChartFonts.jar -DgroupId=com.example -DartifactId=jFreeChartFont -Dversion=0.0.1 -Dpackaging=jar

这是 pom.xml 中的依赖声明:

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>jFreeChartFonts</artifactId>
        <version>0.0.1</version>
    </dependency>

我也尝试将范围设置为运行时而不是编译,但这没有什么区别。

4

1 回答 1

0

在 lib jasperreport 中:打开 .jar
打开:net/sf/jasperreports/fonts
您会看到:仅存在文件夹字体名称“pictonic”
和文件配置:“jasperreports-fonts.xml”

<fontFamily name="Pictonic" visible="false">
        <normal>
            <ttf>net/sf/jasperreports/fonts/pictonic/pictonic.ttf</ttf>
            <svg>net/sf/jasperreports/fonts/pictonic/pictonic.svg</svg>
            <eot>net/sf/jasperreports/fonts/pictonic/pictonic.eot</eot>
            <woff>net/sf/jasperreports/fonts/pictonic/pictonic.woff</woff>
        </normal>
        <pdfEncoding>Identity-H</pdfEncoding>
        <pdfEmbedded>true</pdfEmbedded>
    </fontFamily>

复制文件夹 dejavu 有:DejaVuSans.ttf,DejaVuSans-Bold.ttf,...
到 'net/sf/jasperreports/fonts'
并添加到配置文件:'jasperreports-fonts.xml'

<fontFamily name="DejaVu Sans">
...
</fontFamily>

END 重建 MAVEN -> 成功!

于 2015-07-11T09:28:19.353 回答