2009-12-04 504 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