我正在使用 Jasper jar 生成有关我的 J2EE 项目的报告。我能够成功生成 PDF,没有任何问题。但是,我希望根据我们在一处配置的设置动态更改所有 PDF 的字体名称。
我开始了解条件样式,这对于完成此任务很有用。然而,我确实有数百种字体,无法在每个地方都有条件地设置样式。这将使报告变得更加糟糕。
我正在寻找一个合适的解决方案来帮助我动态更改 jasper PDF 上的字体。
我能想到的最简单的方法是在报告中使用默认样式并在填写报告之前通过java更改其字体名称。
Example
在jrxml中设置样式(我将使用默认样式),因为这样我不需要将其分配给textField
而且可以更快地从JasperReport
object
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="reputation" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a88bd694-4f90-41fc-84d0-002b90b2d73e">
.....
<style name="myStyle" isDefault="true" fontName="DejaVu Sans"/>
....
</jasperReport>
在java中加载您的报告(jrxml),更改默认样式字体名称,然后填写报告
JasperReport report = JasperCompileManager.compileReport("jmyReport.jrxml");
report.getDefaultStyle().setFontName("NewFontName");
JasperPrint jasperPrint = JasperFillManager.fillReport(report, paramMap,datasource);
但记得你需要将所有字体添加到字体扩展! https://stackoverflow.com/a/35549391/5292302,如果您想确保它们在客户端计算机上的 pdf 导出中正确呈现。
您还可以使用非默认样式,在这种情况下您需要将其分配给textField
并在中找到它JRStyle[] styles = report.getStyles();
通过比较JRStyle#getName() http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRStyle.html#getName--
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)