2009-12-04 115 views
3

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

我需要使用高于72dpi的分辨率,因为我打算在预格式化的不干胶标签中打印,这些标签在设置位置时需要一定的精确度。但是,由于JasperReports只能使用像素,并且AFAIK仅支持72dpi配置,所以我无法正确设置边距,间距等。例如,当你需要一个1mm的配置时,你需要转换为像素,这将是由iReport自动转换的3px(实际上,实际值是〜3.78px,但像素不能是十进制和iReport截断而不是四舍五入)。但是,当您将其计算回毫米(例如,当您打印时)时,实际尺寸为〜0.79毫米,而不是您需要的旧1毫米。如果考虑四舍五入的值(4px而不是3px),则最终打印值为〜1.06mm,仍然是错误的。

即使您认为0.06毫米或0.21毫米不是有价值的,它实际上是当您有20个或更多的顺序标签时,一旦增加标签数量,此误差幅度就会变大。

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

回答

1

作为一种变通方法是使用JRGraphics2DExporterParameter.ZOOM_RATIO作为PrinterExporter参数,用适当的变焦比为float做什么工作。

例如,假设我有一个144dpi的配置(2 x 72dpi),上面的ZOOM解决方案工作,如果我通过0.5f作为参数,因为它打印相当于72dpi的大小。

考虑到这是一个解决方法,真正的DPI解决方案将不胜感激。

+0

如果使用JRGraphics2DExporter,这是一个很好的解决方案。现在我正在为JRPDFExporter寻找类似的解决方案 – 2013-12-11 17:54:49

0

尝试

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

printerExporter.setParameter(
    JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, attrs); 

(从here

+0

感谢您的回答,但我无法得到它的工作。我能够实现类似的解决方案,我现在要发布。但是,“官方”DPI解决方案会更好,如果我只是想弄清楚如何使其工作。 – Renato 2009-12-04 16:33:05