Я распечатываю сложный пользовательский интерфейс приложения Swing на физическом принтере через аэропорт. У меня есть машины Mac и Windows, которые печатают на одном принтере. Печать с Mac выглядит великолепно. Печать из окон выглядит далеко не великолепно - все очень пикселировано, включая шрифты и линии графика.
Некоторые копания показывают, что доступные PrintServices для разных платформ разные.
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
PrintServiceLookup.lookupPrintServices(flavor, attrs);
При выполнении из Mac, приведенный выше возвращает массив из одного элемента. Из окон возвращает пустой массив. Это заставляет меня поверить, что Windows отправляет изображение с разрешением 72 DPI вместо данных PostScript.
Это разница в реализациях Mac & Windows JVM? Есть ли обходной путь, чтобы заставить печать работать в Windows? Я понимаю, что могу сгенерировать собственное растровое изображение с разрешением 350 точек на дюйм и отправить его на принтер, но эти вещи уходят на сотни страниц, и я действительно хотел бы избежать этого пути, если это возможно.