java - 分辨率不同于 72dpi 的 JasperReports

标签 java printing reporting jasper-reports dpi

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

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

比如需要1mm的配置,需要转为像素,iReport自动转为3px(实际实际值为~3.78px,但像素不能为小数,iReport会截断而不是四舍五入)。但是,当你将它计算回毫米时(例如,当你打印时),它实际上得到的尺寸约为 0.79 毫米,而不是你需要的旧 1 毫米。如果考虑圆形值(4px 而不是 3px),您的最终打印值为 ~ 1.06mm,仍然是错误的。

即使您认为 0.06 毫米或 0.21 毫米没有值(value),当您有 20 个或更多排序标签时,它实际上是有值(value)的,并且随着标签数量的增加,这个误差范围会变得更大。

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

最佳答案

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

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

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

关于java - 分辨率不同于 72dpi 的 JasperReports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1844097/

相关文章:

java - Java 中有 ImmutableBitSet 吗?

css - 分页后在 ff 中工作正常但在 ie 中不工作

php - 如何使用 PHP/Symfony2 创建复杂的报告?

swift - 如何将热敏蓝牙打印机连接到 iOS 设备

python - 如何使用 QPrinter 和 QPrintPreviewDialog

.net - MVVM 场景中的报表查看器 (rdcl)

c# - 在 rdlc 报告中创建嵌套的 tablix

java - 用冒号分割字符串并在 xml 中以新行显示

java - 我可以使用基于文件的上下文工厂 com.sun.jndi.fscontext.RefFSContextFactory 构建目录结构 (JNDI)

java - 命名包的更好方法是什么