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

JRProperties类已注释为已弃用,并由JRPropertiesUtil中所述的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文件加载。

这是覆盖结构

  1. 从分发中的default.jasperreports.properties加载属性

  2. 如果在发行版的根包中提供,则从jasperreports.properties加载/覆盖属性

  3. 如果在jrxml 报告级别中指定,则加载/覆盖属性

       ...  
  4. 如果在jrxml 元素级别中指定,则加载/覆盖属性

        

您还可以使用jrxml设置动态属性

  

阅读更多内容以了解如何使用IDE: properties-how-use-additional-properties-build-enhanced-reports

那么你应该把你的财产net.sf.jasperreports.awt.ignore.missing.font=true放在哪里?

您不应该使用它会导致导出不一致,您应该使用font-extensions,请参阅我的答案这个字体不适用于Jasper Reports的JVM

如果你不在乎把它放在jasperreports.propertiesjrxml报告级别

您找到的两个解决方案都可用于设置全局属性。

他们做同样的事情,JRPropertiesUtil.setProperty()调用JasperReportsContext.setProperty()。

我会推荐第一个,因为它更短。