我正在通过机场将复杂的 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 光栅化图像并将其发送到打印机,但是这些东西会进入数百页,如果可能的话,我真的很想避免这条路线。