我一直在尝试使用jaspereports以72dpi以上的分辨率打印,但没有成功。
我需要使用72dpi以上的分辨率,因为我要打印那些预先格式化的胶粘标签,在设置位置时需要一定的精度。但是,由于jaspereports只能使用像素,而afaik只支持72dpi配置,所以我无法正确设置边距和间距等。
例如,当您需要1毫米配置时,您需要转换为像素,这将是由iReport自动转换的3px(实际上,实际值是~3.78px,但像素不能是十进制的,iReport会截断而不是舍入它)。但是,当你把它计算回mm(例如,当你打印时),它实际上得到的是~0.79mm的大小,而不是你需要的旧的1mm。如果考虑圆形值(4px而不是3px),最终打印值将为~1.06mm,仍然是错误的。
即使你认为0.06mm或0.21mm不是什么有价值的东西,实际上是当你有20个或更多的序列标签时,一旦你增加标签的数量,这个误差范围就会变大。
最后,有什么方法可以使用jaspereports以毫米级精度打印报告,或者有什么方法可以解决这个问题?
最佳答案
作为一种解决方法,可以使用jrgraphics2dexporterparameter.zoom_ratio作为printerexporter参数,使用适当的缩放比率作为float。
例如,假设我有一个144dpi配置(2 x 72dpi),如果我将0.5f作为参数传递,则上面的缩放解决方案可以工作,因为它打印72dpi等效大小。
考虑到这是一个解决办法,一个真正的dpi解决方案将是可取的。