JRProperties 已弃用,推荐的替换方式
JRProperties became deprecated, recommended way of replacing
文档中所述JRProperties
class has been annotated as deprecated and replaced by JRPropertiesUtil
我一直在用它按以下方式设置属性(因为它 class 提供静态方法),
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);
(...)
所以我的问题是:
设置报表打印机属性的推荐方法是什么?
您当前的建议方法没有区别,但如果您正在寻找设置属性的正常方法。
属性是从 .properties
文件和您的 jrxml
文件加载的。
这是覆盖结构
从分布default.jasperreports.properties
加载属性
Loads/override 来自 jasperreports.properties
的属性(如果在您的发行版的根包中提供)
Loads/override 属性 如果在 jrxml 中指定 report level
<jasperReport...>
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
...
</jasperReport>
Loads/override 属性 如果在 jrxml 中指定 element level
<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
报告级别
您找到的两种解决方案均适用于设置全局属性。
他们做同样的事情,JRPropertiesUtil.setProperty() 调用 JasperReportsContext.setProperty()。
我会推荐第一个,因为它更短。
只需添加以下行即可将参数传递给 jasper 上下文。JRPropertiesUtil.asBoolean("net.sf.jasperreports.awt.ignore.missing.font", true);
这有效,并且会在控制台上打印错误。
2021-08-30 22:05:08 FontUtil [WARN] Font 'calibri' is not available to the JVM. For more details, see http:/
文档中所述JRProperties
class has been annotated as deprecated and replaced by JRPropertiesUtil
我一直在用它按以下方式设置属性(因为它 class 提供静态方法),
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);
(...)
所以我的问题是:
设置报表打印机属性的推荐方法是什么?
您当前的建议方法没有区别,但如果您正在寻找设置属性的正常方法。
属性是从 .properties
文件和您的 jrxml
文件加载的。
这是覆盖结构
从分布
default.jasperreports.properties
加载属性Loads/override 来自
jasperreports.properties
的属性(如果在您的发行版的根包中提供)Loads/override 属性 如果在 jrxml 中指定 report level
<jasperReport...> <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/> ... </jasperReport>
Loads/override 属性 如果在 jrxml 中指定 element level
<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
报告级别
您找到的两种解决方案均适用于设置全局属性。
他们做同样的事情,JRPropertiesUtil.setProperty() 调用 JasperReportsContext.setProperty()。
我会推荐第一个,因为它更短。
只需添加以下行即可将参数传递给 jasper 上下文。JRPropertiesUtil.asBoolean("net.sf.jasperreports.awt.ignore.missing.font", true);
这有效,并且会在控制台上打印错误。
2021-08-30 22:05:08 FontUtil [WARN] Font 'calibri' is not available to the JVM. For more details, see http:/