java – JasperReports:如何添加不在应用程序类路径中的字体
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JasperReports:如何添加不在应用程序类路径中的字体,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1571字,纯文字阅读大概需要3分钟。
内容图文
![java – JasperReports:如何添加不在应用程序类路径中的字体](/upload/InfoBanner/zyjiaocheng/828/1e91a0e3289443ff94c7ddb9218bedfa.jpg)
我试图使用JasperReports在我的本地操作系统上安装的字体.碧玉报告以这种方式使用:
<textField>
<reportElement x="0" y="0" width="137" height="20"/>
<textElement>
<font fontName="Corbel" size="12"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{something}]]></textFieldExpression>
</textField>
名为Corbel的字体作为字体扩展名导出(使用iReport),并包含在我的系统上的文件夹中的文件(Corbel.jar)中.
我将此扩展添加到应用程序的类路径中,使用如下代码:
ClassLoader cl = new URLClassLoader(new URL[] {new URL("file:///D:/path/to/Corbel_jar_folder/")});
param = new HashMap();
param.put(JRParameter.REPORT_CLASS_LOADER, cl);
jasperReport = JasperCompileManager.compileReport("d:/path/to/Report_with_Corbel_font.jrxml");
jasperPrint = JasperFillManager.fillReport(jasperReport, param, new JREmptyDataSource());
填写报告后,我使用JRPdfExporter导出它.但是,在结果pdf文件中,元素没有应用Corbel字体.我没有包含pdf导出,因为我认为问题出在填充的某个地方.
我搜索并阅读了与JasperReports中使用/包含字体(即扩展名)相关的大量帖子和问题;我仍然不知道错误或问题存在于何处.
任何帮助将不胜感激.
先感谢您! (对不起代码缩进,我希望我已经包含了足够的细节)
最佳答案:
问题是字体扩展jar的加载是从线程上下文类加载器和JRParameter.REPORT_CLASS_LOADER以及JRExporterParameter.CLASS_LOADER完成的.
因此,在我的情况下,必须保存当前(初始)线程类加载器,我们必须执行类似Thread.currentThread().setContextClassLoader(cl)的操作,其中cl是基于JasperReports的应用程序的上下文,然后是线程context classloader被恢复为原始的.
问题已得到解答,详细信息可用于here.
我希望这个答案可以帮助其他人面临类似的(字体)问题.
内容总结
以上是互联网集市为您收集整理的java – JasperReports:如何添加不在应用程序类路径中的字体全部内容,希望文章能够帮你解决java – JasperReports:如何添加不在应用程序类路径中的字体所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。