【发布时间】:2009-05-21 22:19:01
【问题描述】:
我正在通过机场将复杂的 Swing 应用程序 UI 打印到物理打印机。我有 Mac 和 Windows 机器都打印到同一台打印机。从 Mac 打印看起来很棒。从 Windows 打印看起来远非完美 - 一切都非常像素化,包括字体和图形线条。
一些挖掘发现可用的 PrintServices 对于不同的平台是不同的。
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
PrintServiceLookup.lookupPrintServices(flavor, attrs);
当从 mac 执行时,上面返回一个单元素数组。从 Windows 中,它返回一个空数组。这让我相信 Windows 正在向打印机发送 72 DPI 图像,而不是 postscript 数据。
这是 mac 和 windows JVM 实现的区别吗?是否有任何解决方法可以在 Windows 上进行打印?我意识到我可以生成自己的 350dpi 光栅化图像并将其发送到打印机,但是这些内容会占用数百页,如果可能的话,我真的很想避免这条路线。
【问题讨论】:
-
我偶然发现了这个问题,我知道它很古老,您可能已经意识到这一点,但是第二行代码是不必要的,
lookupPrintServices允许第二个参数是null如果您不需要设置属性。
标签: java windows swing printing postscript