[Comm] [UNDOCUMENTED] Re: [SOLVED] foo2oak & Ghostscript & Kyocera KM-1635

ABATAPA =?iso-8859-1?q?altlinux-community_=CE=C1_yandex=2Eru?=
Ср Сен 19 15:20:47 MSD 2007


18 сентября 2007 г. Maks Re написал:
> поддерживаю...
> у самого есть аткой аппарат в месте одном...
Хм... Тогда так...
Посмотрев, что выходит "из-под пера" драйвера Windows, я узрел в начале 
файла "OAK".
Сделав
# apt-cache search  oak
я получил
Lfoo2zjs - ZJS (some HP/Minolta) printer driver

 Установив пакет, я добавил принтер, выбрав производителя "Generic", 
модель "OAKT Printer foo2oak". Попробовав печатать на нем, я увидел, что 
несмотря на любые настройки позиции листа, печать происходит _вдоль_ 
принтера, а т.к. у нас бумага лежит вдоль барабана (лист A4 в кассете 
вертикально) для равномерности износа последнего - я получал печать поперек 
листа. И все бы ничего - в конце-концов, есть же лоток для ручной подачи, - 
но лист печатался ЗЕРКАЛЬНО по длине листа! 8(
 Пришлось думать, как "отзеркалить" выводимое изображение.
 Сначала хотел использовать GhostScript, однако, скопировав оригинальный 
/usr/bin/foo2oak в /usr/bin/foo2oak.orig:
	# cp -a /usr/bin/foo2oak /usr/bin/foo2oak.orig
сделав простую "оболочку" (wrapper) /usr/bin/foo2oak вида:
	#/bin/bash
	echo "$@" >/tmp/foo2oak.log
	cat > /tmp/foo2oak.out
	foo2oak.orig <  /tmp/foo2oak.out

я получил  /tmp/foo2oak.out, на который file невозмутимо сказал, что это PNM 
image.
Тогда, посмотрев все исполняемые файлы, которые начинаются с 'pnm', я нашел 
решение - pnmsplit для разбиения общего PNM на отдельные файлы-страницы, и 
pnmflip для "зеркалирования"/вращения (из netpbm).

В итоге, после нескольких экспериментов, я исправил /usr/bin/foo2oak  так:
	#!/bin/bash
	
	TMPFILE=`mktemp -t foo2oak.$$.` || exit 1
	pnmsplit - $TMPFILE%d.pnm -padname=3
	for i in $TMPFILE[0-9]*.pnm ; do pnmflip -transpose < $i > $i.new; done
	cat $TMPFILE[0-9]*.pnm.new | foo2oak.old "$@"
	/bin/rm $TMPFILE[0-9]* $TMPFILE

Так же пришлось исправить и /usr/bin/foo2oak-wrapper, т.к. почему-то не 
получалось одними лишь свойствами драйвера / параметрами страницы выбрать 
источник бумаги (нижний лоток):
	#!/bin/bash
	foo2oak-wrapper.orig -p9 -s1 -op


Я понимаю, что все это некрасиво, но... Меня просто утомило, что для того, 
чтобы напечатать страницу на этом "поделии", мне приходится перебрасывать 
файл в Windows. И в тот вечер чаша моего терпения иссякла. :)

Единственное неудобство (хотя - может, и достоинство) сейчас - это то, что 
после печати таким образом этот МФУ ждет вмешательства пользователя, 
сигнализируя соотв. значком, т.к. формат и ориентация печатаемого листа 
(Plain A4) не совпадают с тем, что имеется в лотке. Приходится вставать, 
подходить  к принтеру, жать кнопки "Printer" и "Продолжить" (большую 
зеленую) - один раз на задание.

Зато - можно наконец-то печатать. :)

PS: Если у кого-то другая ориентация бумаги - придется поменять параметры 
pnmflip, и изменить параметры для foo2oak-wrapper.orig, которые определяют 
формат и ориентацию бумаги. Хотя, советую печатать "поперек" листа (в кассете 
A4 вертикально) - как я уже упоминал, при этом барабан будет изнашиваться 
равномерно (а не только в середине на ширину A4), да и порошок будет 
расходоваться экономнее.

PPS: Против таких "недопринтеров", но... Купили "по совету знакомых спецов", и 
было поздно.
-- 
ABATAPA



Подробная информация о списке рассылки community