LINUX.ORG.RU

Профильтровать Postscript-поток перед печатью


0

0

Возникла такая задачка: Java5 при печати на виндовый CUPS/Samba принтер HP LaserJet 1005 печатает нормально, а Java6 не печатает вообще. Печатью в файл удалось выяснить, что проблема в том что Java6 пихает в пролог Postscript-а дополнительный ключик "/DeferredMediaSelection true" - если после печати в ps-файл открыть его текстовым редактором и удалить этот ключ то файл рендерится и печатается нормально.

Вопрос: как бы вклиниться между приложением и CUPS-ом, перехватить поток и вырезать оттуда этот кусочек?

Добавить (изменить) параметр print command = в шару принтера? И через простейший фильтр файло скармливать дальше.

anonymous
()
Ответ на: комментарий от anonymous

Тут возникает вопрос, как распарсить postscript. Если проблема на уровне DSC -- решается элементарно. Если именно на уровне postscript -- поиском/заменой не решается ВООБЩЕ, без написания парсера языка postscript. Хотя с третьей стороны, для *конкретного* пролога таки решается поиском и заменой.

fk0
()

Если приложение слинковано с libcups, то никак нельзя. А если оно для передачи задания вызывает команды lp или lpr, то можно для них wrapper написать. А ещё бывают проги, такие как Mozilla и OpenOffice.org, которые проверяют, доступен ли сервер cups, и если он недоступен, то используют команду lpr, или lp для передачи задания на печать. Такие проги можно обмануть путём установки переменной окружения CUPS_SERVER при их запуске, например, туда можно записать пустое значение.

Evil_And ★★
()
Ответ на: комментарий от Evil_And

а ещё можно подменить фильтр /usr/lib/cups/filter/pstops, сделав в нём фильтрацию PS.

Evil_And ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.