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报告级别