JRProperties
类已注释为已弃用,并由JRPropertiesUtil
替换,如文档中所述
我一直在使用它以下列方式设置属性(因为它是一个提供静态方法的类),
JRProperties.setProperty("net.sf.jasperreports.default.font.name", defaultPDFFont);
JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
(...)
我假设现在设置属性的一种未经推荐的方法。
我已经找到了两种符合API文档的方法,即直接使用JasperReportsContext
的实例:
JasperReportsContext jasperReportsContext = DefaultJasperReportsContext.getInstance();
jasperReportsContext.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
jasperReportsContext.setProperty("net.sf.jasperreports.default.font.name", defaultPDFFont);
(...)
或将JasperReportsContext
个实例传递给JRPropertiesUtil
:
JasperReportsContext jasperReportsContext = DefaultJasperReportsContext.getInstance();
JRPropertiesUtil jrPropertiesUtil = JRPropertiesUtil.getInstance(jasperReportsContext);
jrPropertiesUtil.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
jrPropertiesUtil.setProperty("net.sf.jasperreports.default.font.name", defaultPDFFont);
(...)
所以我的问题是:
为报告打印机设置属性的推荐方法是什么?
答案 0 :(得分:1)
您目前建议的metod没有区别,但如果您正在寻找设置属性的常规方法。
从.properties
个文件和您的jrxml
文件加载属性。
这是覆盖结构
从分发
default.jasperreports.properties
加载属性
如果在您的发行版的根软件包中提供,则jasperreports.properties
加载/覆盖属性
如果在jrxml 报告级别
中指定,则加载/覆盖属性<jasperReport...>
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
...
</jasperReport>
如果在jrxml 元素级别
中指定,则加载/覆盖属性<reportElement>
<property name="net.sf.jasperreports.export.html.class" value="test"/>
</reportElement>
您还可以使用
在jrxml中设置动态属性<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{SheetName}]]></propertyExpression>
阅读更多内容以了解如何使用IDE:properties-how-use-additional-properties-build-enhanced-reports
那么你应该把你的财产net.sf.jasperreports.awt.ignore.missing.font=true
放在哪里?
你应该不使用这会导致出口不一致,你应该使用字体扩展名,请参阅我的回答Font is not available to the JVM with Jasper Reports
如果您不小心将其置于jasperreports.properties
或jrxml
报告级别
答案 1 :(得分:0)
您找到的两个解决方案都可用于设置全局属性。
他们做同样的事情,JRPropertiesUtil.setProperty()调用JasperReportsContext.setProperty()。
我会推荐第一个,因为它更短。