Java打印 - 少数打印机上的放大打印问题

7
在某些打印机上,通过Java JVM(Java 7)打印时,由于默认设置,打印输出会自动放大。这似乎是旧打印机的问题,很少见,但有超过一个打印机型号出现了这种情况。升级驱动程序也无法解决此问题。
该软件使用JFreeReport(经典引擎)库,当使用该库导出为PDF时,一切正常。同样,使用该库的打印预览也完美无缺。然而,在打印方面,只有极少数打印机出现了放大的情况。它们没有缩放,但字体要大得多,并且间距不正确,以至于它们会重叠在彼此之上。
这些相同的打印机使用JDK 6似乎工作正常。我认为可能是这些打印机不正确地支持Java 7,正在努力隔离问题。 更新:我找到了这个帖子,似乎表明JDK 7u21存在一些问题。在发布说明中没有看到任何解决此问题的内容。另外,这是另一个类似的错误报告示例更新2:对于任何感兴趣的人,我写了一篇名为Mac OS X上使用Java 7打印出现问题的博客文章,其中包含更多详细信息和我的发现。

目前我正在创建一个临时文件,然后调用“lp tempFile.pdf”,但这并不理想,因为它假定默认打印机是正确的。必须有一个解决方案。我无法相信Oracle和Apple已经将这个重大的漏洞留给了数月时间。这对于许多应用程序来说都是至关重要的事情!!! - Stephane Grenier
3个回答

2
这是一个已知的错误。虽然有一些解决方法(如链接中提到的对称打印分辨率,将其转换为缓冲图像然后打印),但我目前还不知道任何修复方法。

0

显然没有解决方案。问题在于 JVM 设置的字体属性被 Mac OS 忽略,正如 此 bug 报告这个 bug 报告 所述。

唯一的解决方法是创建一个临时文件,然后使用以下方式打印:

try
{
    Process process = Runtime.getRuntime().exec(new String[]{"lp", tempFileFullPath});
    process.waitFor();
} catch (Exception e) {
    // error handling
}

当然,这可以在一个线程中或通过SwingUtils触发,这取决于你是否有一个GUI应用程序,但这是目前唯一的可能方式。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接