Мне нужно распечатать отчет из настольного Java-приложения на матричном принтере (Epson LX-300 II). Отчет состоит из текста и графики. Принтер подключен через USB, и я использую CUPS для печати. Я печатаю, используя интерфейс Printable (довольно стандартный в Java).
Моя проблема:
Качество печати текста очень низкое на всех разрешениях принтера (60x60, 120x60, 120x72). Кажется, что в каком-то драйвере принтера вообще нет намека на шрифт. Письма выглядят очень некрасиво. Я не могу использовать прямой вывод текста в порт (он выглядит великолепно), потому что мне нужно также печатать графику на той же странице.
Кажется, что проблема не в Java, потому что одно и то же приложение печатает высококачественный текст и графику в Windows. Также кажется, что проблема не в системе CUPS, потому что OpenOffice или Abiword печатает один и тот же текст с теми же шрифтами с очень хорошим качеством (хуже, чем в Windows, но все же хорошо).
Также проблема не в шрифтах: я пробовал шрифт Tahoma из Windows, и он делает то же самое: низкое качество при печати в java / linux.
Проблема не в BCI-хинтинге в X.Org, а отображение на экране выглядит великолепно.
Когда я экспортирую любой документ из OpenOffice в PDF и распечатываю этот PDF, я получаю тот же эффект - уродливые не намекающие шрифты на бумаге. Если тот же документ напечатан из Office, все в порядке.
Я пробовал разные Linux (KUbuntu 10.04, Puppy 2, Puppy 4.3.1), и я получил тот же эффект на любом Linux.
Возможно, проблема в Ghostscript, у меня есть версия 9.x на Puppy и все та же. Или также я думаю, что может быть проблема с растеризатором CUPS ('rastertoepson' или 'foomatic-rip').
Это пример вывода (извините за качественное фото с мобильного телефона):
Я просто понятия не имею, что происходит, помогите мне, пожалуйста.
-
Постскриптум Мое окончательное решение - использовать класс с открытым исходным кодом ESCPrinter.java, добавив к нему возможность печати изображений в соответствии с документацией Epson.