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

mki*_*erc 5 java jasper-reports

JRProperties班已经被注释为过时,取而代之JRPropertiesUtil的文档中所述

我一直在使用它以下列方式设置属性(因为它是一个提供静态方法的类),

JRProperties.setProperty("net.sf.jasperreports.default.font.name", defaultPDFFont);
JRProperties.setProperty("net.sf.jasperreports.awt.ignore.missing.font", "true");
   (...)
Run Code Online (Sandbox Code Playgroud)

我认为这是一种不推荐的设置属性的方法。


我找到了两种符合 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);
   (...)
Run Code Online (Sandbox Code Playgroud)

或者通过将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);
   (...)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

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

Pet*_*erg 2

您当前的建议方法没有区别,但如果您正在寻找设置属性的正常方法。

这些属性是从.properties文件和您的jrxml文件加载的。

这是覆盖结构

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

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

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

    <jasperReport...>
       <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
       ...
    </jasperReport>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果在 jrxml元素级别中指定,则加载/覆盖属性

    <reportElement>
         <property name="net.sf.jasperreports.export.html.class" value="test"/>
    </reportElement>
    
    Run Code Online (Sandbox Code Playgroud)

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

<propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{SheetName}]]></propertyExpression>
Run Code Online (Sandbox Code Playgroud)

阅读更多内容以了解如何使用 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.propertiesjrxml报告级别