7

在某些打印机上,无论出于何种原因,在通过 Java JVM (Java 7) 打印时,打印输出都会自动放大,看起来像是默认设置。这似乎与较旧的打印机有关,而且非常罕见,但不止一种打印机型号会发生这种情况。升级驱动程序也不能解决问题。

该软件使用JFreeReport(经典引擎)库,使用该库导出为PDF时,一切都很棒。使用库的打印预览也是完美的。然而,当涉及到打印时,并且这仅适用于极少数打印机,打印输出会被放大。它们没有放大,但字体要大得多,而且间距不正确,因此它们相互重叠。

这些带有 JDK 6 的打印机似乎工作正常。看来,我仍在尝试隔离问题。我的想法是这些打印机可能无法正确支持 Java 7

更新:我发现这个线程似乎表明 JDK 7u21 存在一些问题。我在发行说明中没有看到任何解决此问题的内容。另外这里是另一个类似的错误报告的例子

更新 2:对于任何感兴趣的人,我写了一篇名为Printing is Broken on Mac OS X with Java 7关于这个问题的博客文章,其中包含更多细节和我发现的内容。

4

3 回答 3

2

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

于 2013-05-17T22:50:43.483 回答
0

显然没有解决办法。问题是 JVM 设置的字体属性被 Mac OS 忽略,如本错误报告本错误报告中所述。

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

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

当然,这可以在线程中或通过 SwingUtils 触发,具体取决于您是否有 GUI 应用程序,但这是目前唯一可行的方法。

于 2013-05-30T17:31:00.060 回答
0

这是一个已知的错误 - 如果您不想使用 PDF 打印解决方法,您可以查看此答案:

https://stackoverflow.com/a/17345102/456837

于 2013-07-11T16:31:51.693 回答