JasperReports的分辨率不同于72dpi

时间:2009-12-04 00:32:09

标签: java printing reporting jasper-reports dpi

我一直在尝试使用JasperReports以高于72dpi的分辨率打印,但没有成功。

我需要使用72dpi以上的分辨率,因为我要打印那些预先格式化的胶粘标签,这些标签在设置位置时需要一定的精度。但是,由于JasperReports只能使用像素,而AFAIK只支持72dpi配置,因此我无法正确设置边距,间距等。

例如,当你需要一个1mm的配置时,你需要转换为像素,由iReport自动转换为3px(实际上,实际值是~3.78px,但像素不能是十进制和iReport截断而不是四舍五入)。但是,当你计算回mm时(例如,当你打印时),它实际上得到的尺寸约为0.79mm,而不是你需要的旧1mm。如果考虑圆值(4px而不是3px),你的最终打印值为~1.06mm,仍然是错误的。

即使您认为0.06mm或0.21mm不是有价值的东西,当您有20个或更多序列标签时它也是实际的,并且一旦增加标签数量,这个误差范围就会变大。

最后,有什么方法可以使用JasperReports以毫米精度打印报告,还是有解决此问题的方法?

3 个答案:

答案 0 :(得分:1)

作为一种解决方法的工作是使用JRGraphics2DExporterParameter.ZOOM_RATIO作为PrinterExporter参数,并将适当的缩放比率设置为float。

例如,假设我有144dpi配置(2 x 72dpi),如果我将0.5f作为参数传递,则上述ZOOM解决方案有效,因为它打印72dpi等效大小。

考虑到这是一种解决方法,我们将非常感谢真正的DPI解决方案。

答案 1 :(得分:0)

尝试

PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
attrs.add(new PrinterResolution(203, 203, ResolutionSyntax.DPI));

printerExporter.setParameter(
    JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, attrs);

(来自here

答案 2 :(得分:0)

可能的解决方案是我在Jasper Report论坛中对这个问题的回答:

您可以创建具有良好分辨率的大型报告图像,并将图像缩放为小图像。

http://community.jaspersoft.com/questions/517024/export-report-image-jpg-bmp-or-any-format