java – JRProperties被弃用,推荐的替换方式

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);
   (...)

所以我的问题是:

设置报表打印机属性的推荐方法是什么?

最佳答案 你当前建议的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-extensions,请参阅我在Font is not available to the JVM with Jasper Reports的答案

如果你不在乎把它放在jasperreports.properties或jrxml报告级别

点赞