複雑なスイングアプリケーションUIを空港経由で物理プリンターに印刷しています。MacとWindowsの両方のマシンを同じプリンターで印刷しています。Macからの印刷は見栄えがします。Windowsからの印刷は、見栄えがよくありません。フォントやグラフの線など、すべてが非常にピクセル化されています。
掘り下げてみると、利用可能なPrintServicesはプラットフォームごとに異なることがわかります。
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
PrintServiceLookup.lookupPrintServices(flavor, attrs);
Macから実行すると、上記は単一要素の配列を返します。Windowsからは、空の配列を返します。これにより、Windowsは、追記データではなく、72DPIの画像をプリンターに送信していると思います。
これは、MacとWindowsのJVM実装の違いですか?Windowsでの印刷を機能させるための回避策はありますか?自分で350dpiのラスタライズされた画像を生成してプリンタに送信できることはわかっていますが、これらは数百ページに及ぶため、可能であればそのルートは避けたいと思います。