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
文件加载。
这是覆盖结构
-
从分发中的
default.jasperreports.properties
加载属性 -
如果在发行版的根包中提供,则从
jasperreports.properties
加载/覆盖属性 -
如果在jrxml 报告级别中指定,则加载/覆盖属性
... -
如果在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.properties
或jrxml
报告级别
您找到的两个解决方案都可用于设置全局属性。
他们做同样的事情,JRPropertiesUtil.setProperty()调用JasperReportsContext.setProperty()。
我会推荐第一个,因为它更短。
- 在Grails战中包含Liberation .ttf字体?
- 将自定义数据源添加到Jaspersoft Studio
- 关闭JasperViewer时如何防止关闭JFrame
- net.sf.jasperreports.engine.util.JRStyledTextParser上的JasperReports NoClassDefFoundErrorexception
- 使用Jasper Report导出包含嵌入图像的单个HTML
- JasperReports:无法找到子报告
- 编译错误:ireport with java;属性’uuid’不允许出现在元素’jasperReport’中
- 如何以3个样本打印碧玉报告,几乎没有变化?
- JasperReports中的java.util.ConcurrentModificationException