Java-печать - Увеличенные распечатки на небольшом количестве принтеров

На некоторых принтерах по какой-либо причине распечатки автоматически увеличиваются до значений, которые, по-видимому, являются настройками по умолчанию при печати через Java JVM (Java 7). Это похоже на старые принтеры, и это довольно редко, но это происходит с более чем одной моделью принтера. Также обновление драйверов не решает проблему.

Программное обеспечение использует библиотеку JFreeReport (классический движок), и при использовании библиотеки для экспорта в формате PDF все отлично. Кроме того, предварительный просмотр с использованием библиотеки идеально подходит. Однако, когда дело доходит до печати, и это только с очень очень небольшим количеством принтеров, распечатки увеличиваются. Они не увеличены, но шрифты намного больше и неправильно расположены, так что они перекрывают друг друга.

Эти же принтеры с JDK 6 работают нормально. Кажется, я все еще пытаюсь изолировать проблему. Я думаю, что, возможно, эти принтеры не поддерживают должным образом Java 7

Обновление: я нашел эту ветку, которая, кажется, указывает, что есть некоторые проблемы с JDK 7u21. Я не видел ничего в примечаниях к выпуску, чтобы решить эту проблему. Кроме того, вот еще один пример аналогичного сообщения об ошибке.

Обновление 2: Для всех, кто интересуется, я написал сообщение в блоге под названием Printing is Broken на Mac OS X с Java 7 об этой проблеме, в котором содержатся дополнительные сведения и обнаруженные мной данные.

3 ответа

Решение

Видимо нет решения. Проблема заключается в том, что атрибуты шрифта, установленные JVM, игнорируются Mac OS, как указано в этом отчете об ошибках и в этом отчете об ошибках.

Единственный обходной путь - создать временный файл, а затем распечатать его, используя:

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

Конечно, это может быть запущено в потоке или через SwingUtils в зависимости от того, есть ли у вас приложение с графическим интерфейсом, но это единственный возможный способ в настоящее время.

К сожалению, это известная ошибка. Хотя есть несколько обходных путей (симметричное разрешение печати, упомянутое в ваших ссылках, преобразование в изображение с буферизацией, а затем его печать), я пока не знаю ни одного исправления.

Это известная ошибка - если вы не хотите использовать обходной путь PDF-печати, вы можете проверить этот ответ:

/questions/11038532/prilozhenie-java-na-mac-os-x-nepravilno-pechataet-shriftyi/11038553#11038553

Другие вопросы по тегам